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的更多相关文章

  1. Android动态类生成预加载-dexmaker使用

    一.dexmaker简单介绍 dexmaker是运行在Android Dalvik VM上,利用Java编写,来动态生成DEX字节码的API.如果读者了解AOP编程的话,应该听说过cglib or A ...

  2. Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解

    废话不多说,本文将会层层深入给大家讲解如何动态的生成一个完整的界面. 本文内容: Java代码中动态生成View Java代码中动态设置View的位置,以及其他的属性 LayoutParams详解 一 ...

  3. XML之自动生成类,添加,修改,删除类的属性

    1. class ClassHelperDemo { public static void Main() { #region 演示一:动态生成类. //生成一个类t. Type t = ClassHe ...

  4. json.net(Json.NET - Newtonsoft)利用动态类解析json字符串

    将对象转换为字符串很简单,唯一要注意的点就是为了避免循环要在需要的字段上添加jsonignore属性.可以参照这篇博文:http://www.mamicode.com/info-detail-1456 ...

  5. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  6. mvc中动态给一个Model类的属性设置验证

    原文:mvc中动态给一个Model类的属性设置验证 在mvc中有自带的验证机制,比如如果某个字段的类型是数字或者日期,那么用户在输入汉字或者英文字符时,那么编译器会自动验证并提示用户格式不正确,不过这 ...

  7. EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性

    创建动态查询 想在项目中实现一个灵活的动态查询类,参考http://www.cnblogs.com/lyj/archive/2008/03/25/1122157.html和http://www.cnb ...

  8. python 反射 动态导入模块 类attr属性

    1.反射 hasattr getattr delattr setattr 优点:事先定义好接口,接口只有在被完成后才能真正执行,这实现了即插即用,这其实是一种“后期绑定”,即先定义好接口, 然后是再去 ...

  9. 解决SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题

    一.在application.yml配置中添加数据库根据实体类自动创建数据库表的配置(这里数据库采用MySQL数据库) jpa: database: MYSQL show-sql: true #Hib ...

随机推荐

  1. css垂直居中 两种方法

    在前端面试的时候我们经常会被问道怎样使一个元素在页面垂直居中呢,这也是一个老生常谈的问题了. 解决的方法基本都是使用定位来实现 div{display: fixed;left: 50%;top: 50 ...

  2. 原生js完成拼图小游戏

    废话不说,看代码,图片可以自己找,我这直接引用了百度的了 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml ...

  3. 【Java EE 学习 28 上】【oracle学习第二天】【子查询】【集合运算】【几种数据库对象】

    一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规 ...

  4. 【leetcode】Remove Element

    题目概述: Given an array and a value, remove all instances of that value in place and return the new len ...

  5. [转载]memcached完全剖析--1. memcached的基础

    转载自:http://charlee.li/memcached-001.html 翻译一篇技术评论社的文章,是讲memcached的连载.fcicq同学说这个东西很有用,希望大家喜欢. 发表日:200 ...

  6. SVG实现导航动画

    效果图动画后 html <!DOCTYPE html> <html > <head> <meta charset="UTF-8"> ...

  7. list点击项高亮其他默认

    // 点击项颜色高亮,其他默认 if (position != lastPosition && onClickItemView != null) { TabMenu lastTabMe ...

  8. 数位DP GYM 100827 E Hill Number

    题目链接 题意:判断小于n的数字中,数位从高到低成上升再下降的趋势的数字的个数 分析:简单的数位DP,保存前一位的数字,注意临界点的处理,都是套路. #include <bits/stdc++. ...

  9. Codeforces 717G Underfail(最小费用最大流 + AC自动机)

    题目 Source http://codeforces.com/problemset/problem/717/G Description You have recently fallen throug ...

  10. 清华学堂 LightHouse

    灯塔(LightHouse) Description As shown in the following figure, If another lighthouse is in gray area, ...