ExpandoObject动态类生成属性转json
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Dynamic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using System.Windows.Forms;
using Newtonsoft.Json;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
private List<Test> l = new List<Test>();
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
List<string> rowname = new List<string>();
List<string> colname = new List<string>();
List<IDictionary<String, Object>> l1 = new List<IDictionary<String, Object>>();
//获得行名称
; i < l.Count; i++)
{
bool IsExist = true;
; j < rowname.Count; j++)
{
if (rowname[j].ToString() == l[i].Name)
{
IsExist = false;
break;
}
}
if (IsExist)
rowname.Add(l[i].Name);
}
// 获得列名称
; i < l.Count; i++)
{
bool IsExist = true;
; j < colname.Count; j++)
{
if (colname[j].ToString() == l[i].Type.ToString())
{
IsExist = false;
break;
}
}
if (IsExist)
colname.Add(l[i].Type.ToString());
}
colname.Insert(,"name");
//数据转换
; i < rowname.Count; i++)
{
dynamic exobj = new ExpandoObject();
var obj = (IDictionary<String, Object>) exobj;
obj.Add("name", rowname[i]);
List<Test> t = l.Where(c => c.Name.Equals(rowname[i])).ToList();
; j < t.Count(); j++)
{
obj.Add(t[j].Type.ToString(), t[j].Money);
}
l1.Add(obj);
}
DataTable dt = new DataTable("dt");
//创建列
; i < colname.Count; i++)
{
dt.Columns.Add(colname[i]);
}
//创建行
; i < l1.Count; i++)
{
DataRow r = dt.NewRow();
; j < dt.Columns.Count; j++)
{
r[j] = l1[i][colname[j]];
}
dt.Rows.Add(r);
}
dataGridView2.DataSource = dt;
]);
MessageBox.Show(json1);
}
private void Form1_Load(object sender, EventArgs e)
{
; i < ; i++)
{
Test t = new Test();
t.Type = ;
t.Name = "nametype" + i.ToString();
t.Money = + i;
l.Add(t);
}
; i < ; i++)
{
Test t = new Test();
t.Type = ;
t.Name = "nametype" + i.ToString();
t.Money = + i;
l.Add(t);
}
; i < ; i++)
{
Test t = new Test();
t.Type = ;
t.Name = "nametype" + i.ToString();
t.Money = + i;
l.Add(t);
}
dataGridView1.DataSource = l;
}
public class Test
{
public string Name { get; set; }
public int Type { get; set; }
public decimal Money { get; set; }
}
}
}
ExpandoObject动态类生成属性转json的更多相关文章
- Android动态类生成预加载-dexmaker使用
一.dexmaker简单介绍 dexmaker是运行在Android Dalvik VM上,利用Java编写,来动态生成DEX字节码的API.如果读者了解AOP编程的话,应该听说过cglib or A ...
- Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
废话不多说,本文将会层层深入给大家讲解如何动态的生成一个完整的界面. 本文内容: Java代码中动态生成View Java代码中动态设置View的位置,以及其他的属性 LayoutParams详解 一 ...
- XML之自动生成类,添加,修改,删除类的属性
1. class ClassHelperDemo { public static void Main() { #region 演示一:动态生成类. //生成一个类t. Type t = ClassHe ...
- json.net(Json.NET - Newtonsoft)利用动态类解析json字符串
将对象转换为字符串很简单,唯一要注意的点就是为了避免循环要在需要的字段上添加jsonignore属性.可以参照这篇博文:http://www.mamicode.com/info-detail-1456 ...
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
- mvc中动态给一个Model类的属性设置验证
原文:mvc中动态给一个Model类的属性设置验证 在mvc中有自带的验证机制,比如如果某个字段的类型是数字或者日期,那么用户在输入汉字或者英文字符时,那么编译器会自动验证并提示用户格式不正确,不过这 ...
- EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性
创建动态查询 想在项目中实现一个灵活的动态查询类,参考http://www.cnblogs.com/lyj/archive/2008/03/25/1122157.html和http://www.cnb ...
- python 反射 动态导入模块 类attr属性
1.反射 hasattr getattr delattr setattr 优点:事先定义好接口,接口只有在被完成后才能真正执行,这实现了即插即用,这其实是一种“后期绑定”,即先定义好接口, 然后是再去 ...
- 解决SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题
一.在application.yml配置中添加数据库根据实体类自动创建数据库表的配置(这里数据库采用MySQL数据库) jpa: database: MYSQL show-sql: true #Hib ...
随机推荐
- way.js - 轻量级、持久化的双向绑定JS库
AngularJS的双向绑定一直为人称道,但使用AngularJS需要对页面组件化,学习成本还是很高的. 本文源自 https://github.com/gwendall/way.js 边学边译. 使 ...
- YII的Modules模块化
转载来源: http://blog.csdn.net/mengxiangbaidu/article/details/7041296 http://blog.csdn.net/colzer/articl ...
- 【leetcode】Two Sum
题目简述: Given an array of integers, find two numbers such that they add up to a specific target number ...
- intellij idea使用
第02章 IntelliJ IDEA起步 熟悉IntelliJ IDEA用户界面 05 状态条 如何使用intellij idea 从Eclipse转移到IntelliJ IDEA一点心得 Intel ...
- Android想服务器传图片,透过流的方式。还有读取服务器图片(文件),也通过流的方式。
/** * Created by Administrator on 2016/7/19. */ import android.util.Log; import com.gtercn.asPolice. ...
- 博客 博客vno主题(我正在用的这个博客主题)
将你自己博客园博客的主题设置为lessismore, #divRefreshComments { text-align: right; margin-right: 10px; margin-botto ...
- 【oracle】oracle表结构导出到Word
因为需要写数据库文档,所以需要把数据库里边的表结构在word中用表格列出来,之前一直用powerdesigner,感觉有些麻烦,后来在网上找到了一段sql语句,经测试完全符合我的需求,不敢独享,语句如 ...
- 【Oracle】oracle中rownum的说明及使用技巧
oracle中常用到ROWNUM,所以做一些本人对rownum的一些认识和使用技巧的记录,以便备查. 一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在inser ...
- Leetcode N-Queens
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...
- css 图片内容在不同分辨率下居中显示(演示的图片宽度是1920px,当图片宽度大于显示屏的宽度时)
1.img 图片内容在不同分辨率下居中显示(如果隐藏多余,在img外面套一个div 设定overflow: hidden.div的大小就是img显示区域的大小) <!DOCTYPE html& ...