C# 将list<>泛型集合 转化为 DataTable
2014-09-26 09:16
716 查看
使用案例:将页面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<T>使用技巧
- C# List泛型集合中的GroupBy<>用法
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C#中将DataTable转化成List<T>的方法解析
- 将DataTable转换成List<T>泛型集合助手类
- C# List泛型集合中的GroupBy<>用法
- 【C#基础知识】——List<T>And Dictionary<K,V>泛型集合
- C#将DataTable转化为List<T>
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- 将泛型集合类(List<T>)转换成DataTable,返回的DataTable所有列的数据类型为string型,且列顺序与字符串提供的字段顺序一致
- C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)
- C#中泛型集合List<T>反序列化问题及解决方法
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C#中DataTable转化为List<T>解析
- C#泛型集合List<T>自带方法之排序
- 泛型中字符串转集合,(T)object,typeOf(T),LIst<T> xxx<T>();c# stringtolist
- C#将DataTable转换成单个T实体和List<T>集合
- C# List泛型集合中的GroupBy<>用法
- C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)
- C#将DataTable转化为List<T>