首页 > 代码库 > DataTable和List集合互转
DataTable和List集合互转
1 /// <summary> 2 /// 将集合转换成DataTable 3 /// </summary> 4 /// <param name="list">集合</param> 5 /// <returns></returns> 6 public static DataTable ToDataTable(IList list) 7 { 8 DataTable result = new DataTable(); 9 if (list.Count > 0) 10 { 11 PropertyInfo[] propertys = list[0].GetType().GetProperties(); 12 foreach (PropertyInfo pi in propertys) 13 { 14 result.Columns.Add(pi.Name, pi.PropertyType); 15 } 16 for (int i = 0; i < list.Count; i++) 17 { 18 ArrayList tempList = new ArrayList(); 19 foreach (PropertyInfo pi in propertys) 20 { 21 object obj = pi.GetValue(list[i], null); 22 tempList.Add(obj); 23 } 24 object[] array = tempList.ToArray(); 25 result.LoadDataRow(array, true); 26 } 27 } 28 return result; 29 } 30 31 32 33 /// <summary> 34 /// 讲DataTable转换成集合 35 /// </summary> 36 /// <param name="dt">数据表</param> 37 /// <returns></returns> 38 public static IList<CarNum> ToList(DataTable dt) 39 { 40 // 定义集合 41 IList<CarNum> ts = new List<CarNum>(); 42 43 // 获得此模型的类型 44 Type type = typeof(CarNum); 45 46 string tempName = ""; 47 48 foreach (DataRow dr in dt.Rows) 49 { 50 CarNum t = new CarNum(); 51 52 // 获得此模型的公共属性 53 PropertyInfo[] propertys = t.GetType().GetProperties(); 54 55 foreach (PropertyInfo pi in propertys) 56 { 57 tempName = pi.Name; 58 59 // 检查DataTable是否包含此列 60 if (dt.Columns.Contains(tempName)) 61 { 62 // 判断此属性是否有Setter 63 if (!pi.CanWrite) continue; 64 65 object value =http://www.mamicode.com/ dr[tempName]; 66 if (value != DBNull.Value) 67 pi.SetValue(t, value, null); 68 } 69 } 70 71 ts.Add(t); 72 } 73 74 return ts; 75 76 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。