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<>:表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法。
最后:感谢网友提供资料。