首页 > 代码库 > C# 将list<>泛型集合 转化为 DataTable

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);

 

C# 将list<>泛型集合 转化为 DataTable