DataTable、实体类Model和泛型List之间的转化

1.网上例子

http://www.2cto.com/kf/201204/127785.html

Serialize() 和getSendDetailTest()

 

2.研发中例子

dt转化成model

dt转化model Code
 1  public static object GetModel(DataTable dt, object model)

 2         {

 3 

 4             foreach (DataRow row in dt.Rows)

 5             {

 6                 foreach (var item in model.GetType().GetProperties())

 7                 {

 8                     if (row.Table.Columns.Contains(item.Name))

 9                     {

10                         if (DBNull.Value != row[item.Name])

11                         {

12                             item.SetValue(model, Convert.ChangeType(row[item.Name], item.PropertyType), null);

13                         }

14 

15                     }

16                 }

17             }

18             return model;

19         }

model 经过list 转化成dt

View Code
List<Sys_grade> list = new List<Sys_grade>();

                        list.Add(grade);

                        DataTable dtgrade = new DataTable();

                        dtgrade = KeyValueHelper.ListToDataTable(list);

                        daclient.SysGradeAdd(dtgrade);

ListToDataTable()方法:

View Code
 1   public static DataTable ListToDataTable<T>(List<T> entitys)

 2         {

 3 

 4             //检查实体集合不能为空

 5             if (entitys == null || entitys.Count < 1)

 6             {

 7                 return new DataTable();

 8             }

 9 

10             //取出第一个实体的所有Propertie

11             Type entityType = entitys[0].GetType();

12             PropertyInfo[] entityProperties = entityType.GetProperties();

13 

14             //生成DataTable的structure

15             //生产代码中,应将生成的DataTable结构Cache起来,此处略

16             DataTable dt = new DataTable("dt");

17             for (int i = 0; i < entityProperties.Length; i++)

18             {

19                 //dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);

20                 dt.Columns.Add(entityProperties[i].Name);

21             }

22 

23             //将所有entity添加到DataTable中

24             foreach (object entity in entitys)

25             {

26                 //检查所有的的实体都为同一类型

27                 if (entity.GetType() != entityType)

28                 {

29                     throw new Exception("要转换的集合元素类型不一致");

30                 }

31                 object[] entityValues = new object[entityProperties.Length];

32                 for (int i = 0; i < entityProperties.Length; i++)

33                 {

34                     entityValues[i] = entityProperties[i].GetValue(entity, null);

35 

36                 }

37                 dt.Rows.Add(entityValues);

38             }

39             return dt;

40         }

 

备注:List<>:表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法。

最后:感谢网友提供资料。

你可能感兴趣的:(Datatable)