一个简单的扩展,用于将DataTable转换成List<T>类型的泛型集合:
1 /// <summary> 2 /// DataTable转换list泛型(反射) 3 /// </summary> 4 /// <typeparam name="T">目标实体</typeparam> 5 /// <param name="dt">源数据表</param> 6 /// <returns>List类型的泛型集合</returns> 7 public static List<T> ToList<T>(this DataTable dt) 8 { 9 var list = new List<T>(); 10 Type t = typeof (T); 11 var plist = new List<PropertyInfo>(typeof(T).GetProperties()); 12 foreach (DataRow item in dt.Rows) 13 { 14 T s = Activator.CreateInstance<T>(); 15 for (int i = 0; i < dt.Columns.Count; i++) 16 { 17 PropertyInfo info = plist.Find(p => p.Name == dt.Columns[i].ColumnName); 18 if (info != null) 19 { 20 if (!Convert.IsDBNull(item[i])) 21 { 22 info.SetValue(s, item[i], null); 23 } 24 } 25 } 26 list.Add(s); 27 } 28 return list; 29 }