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 ...
随机推荐
- 为 placeholder 自定义样式
textarea::-webkit-input-placeholder{ padding: 1em; } textarea::-moz-placeholder{ padding: 1em; } 同理, ...
- 《图形学》实验七:中点Bresenham算法画椭圆
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画椭圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 50 ...
- wp8 入门到精通 仿美拍评论黑白列表思路
static bool isbool = false; private void BindGameDelete() { Tile tile = new Tile(); List<Color> ...
- 目标跟踪_MeanShift
找到一些关于目标跟踪的资料 http://blog.csdn.net/jinshengtao/article/details/30258833 http://blog.sina.com.cn/s/bl ...
- tomcat配置详解/优化方案
Service.xml Server.xml配置文件用于对整个容器进行相关的配置. <Server>元素:是整个配置文件的根元素.表示整个Catalina容器. 属性:className: ...
- AutoCompleteTextView自动补全文本框
AutoCompleteTextView的作用是在输入框中输入我们想要输入的信息,就会出现其他与其相关的提示信息 下面是实例代码: MainActivity.java package com.shao ...
- Hello world!(OC)
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSLog(@"Hello ...
- history.back新页面跳转
今天遇到一个问题,页面跳转失效,原因在于原来在本页面打开的页面现在改为在新页面打开,历史url记录找不到了,所以不能向上一个地址跳转,解决的办法是使用$_SERVER['HTTP_REFERER']获 ...
- 08 Servlet
Servlet技术 * Servlet开发动态的Web资源的技术. * Servlet技术 * 在javax. ...
- block fomating context
http://www.w3help.org/zh-cn/kb/010/ 它与普通的块框类似,不同之处在于: 1可以包含浮动元素 2可以阻止外边距折叠 3可以防止元素被浮动元素覆盖 placeholde ...