zoukankan      html  css  js  c++  java
  • C# 将list<>泛型集合 转化为 DataTable

    使用案例:将页面easy ui 中datagrid表格中的数据,存成json字符串,

         通过ajax和ashx传入C#将string类型的json字符串解析成list<>泛型集合,

         由于业务需要,将本地sql不同表的数据和页面html的数据(通过webservice传入),放在一起处理数据。

    转化方法

    public class ListToDatatable
        {
            public ListToDatatable() { }
            public static DataTable ListToDataTable<T>(List<T> entitys)
            {
    
                //检查实体集合不能为空
                if (entitys == null || entitys.Count < 1)
                {
                    return new DataTable();
                }
    
                //取出第一个实体的所有Propertie
                Type entityType = entitys[0].GetType();
                PropertyInfo[] entityProperties = entityType.GetProperties();
    
                //生成DataTable的structure
                //生产代码中,应将生成的DataTable结构Cache起来,此处略
                DataTable dt = new DataTable("dt");
                for (int i = 0; i < entityProperties.Length; i++)
                {
                    //dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
                    dt.Columns.Add(entityProperties[i].Name);
                }
    
                //将所有entity添加到DataTable中
                foreach (object entity in entitys)
                {
                    //检查所有的的实体都为同一类型
                    if (entity.GetType() != entityType)
                    {
                        throw new Exception("要转换的集合元素类型不一致");
                    }
                    object[] entityValues = new object[entityProperties.Length];
                    for (int i = 0; i < entityProperties.Length; i++)
                    {
                        entityValues[i] = entityProperties[i].GetValue(entity, null);
    
                    }
                    dt.Rows.Add(entityValues);
                }
                return dt;
            }
        }

    1、页面代码

      var rows = $('#tb_Master').datagrid('getRows');
            this.dataArray = new Array();
            for (this.i = 0; i < rows.length; i++) {
                this.model = {
                    PT_PCURR: rows[i].PT_PCURR,
                    MATNR: rows[i].MATNR
                }
                dataArray.push(model);
            }
            var json = $.toJSON(dataArray);

    会得到如下一个json字符串 [{"PT_PCURR":"1.00","MATNR":"8"},{"PT_PCURR":"0.80","MATNR":"8"},{"PT_PCURR":"-0.20","MATNR":"8"}]

    2、将string转化为list<>泛型集合

         List<DDMX> listMX = null;
          if (!string.IsNullOrEmpty(param[1]))
          {
             listMX = Tools.JSONTools.JSONStringToList<DDMX>(param[1]); 
          }
    
       [Serializable]
      //这个实体类,自由创建,根据你前台页面传入的实体类形式
        class DDMX
        {
            private string _matnr;
            private decimal _pt_pcurr;
            public decimal PT_PCURR
            {
                set { _pt_pcurr = value; }
                get { return _pt_pcurr; }
            }
            public string MATNR
            {
                set { _matnr = value; }
                get { return _matnr; }
            }
        }

     有需要 JSONStringToList 方法的朋友可以给我留言,也可自己网上搜搜

    
    

    3、将list<>集合转化为 DataTable

    DataTable dt = new DataTable();
    dt = ListToDatatable.ListToDataTable(listMX);
  • 相关阅读:
    JAVA_集合_作业01
    Java_Objects_hashCode
    Java成员内部类
    Java集合练习_实现购物车需求
    Java初级_单例设计模式
    HelloWorld
    vue中视频标点
    防抖节流?俩者区别?vue如何使用防抖、节流来解决点击问题?
    keep-alive
    axios和ajax的区别
  • 原文地址:https://www.cnblogs.com/holyson/p/3994145.html
Copyright © 2011-2022 走看看