1 public static List<T> GetList<T>(DataTable table) where T:new() 2 { 3 List<T> list = new List<T>(); 4 // 5 T t = default(T); 6 PropertyInfo[] propertypes = null; 7 string tempName = string.Empty; 8 try 9 { 10 foreach (DataRow row in table.Rows) 11 { 12 //动态创建对象 13 t = Activator.CreateInstance<T>(); 14 t = new T(); 15 propertypes = t.GetType().GetProperties(); 16 foreach (PropertyInfo pro in propertypes) 17 { 18 tempName = pro.Name; 19 if (table.Columns.Contains(tempName)) 20 { 21 object value = row[tempName]; 22 if (value != null && value != DBNull.Value && row[tempName].ToString() != null && 23 !row[tempName].ToString().Trim().Equals("")) 24 { 25 if (tempName.Trim().ToLower().Equals("lastmodify")) 26 { 27 // pro.SetValue(t, ConvertHelper.ConvertToTimestamp(Convert.ToString(value)), null); 28 } 29 else 30 { 31 if (pro.PropertyType == typeof(System.Char) || pro.PropertyType == typeof(System.Nullable<System.Char>)) 32 { 33 pro.SetValue(t, Convert.ToChar(value), null); 34 } 35 else 36 { 37 pro.SetValue(t, value, null); 38 } 39 40 41 } 42 } 43 } 44 } 45 list.Add(t); 46 } 47 } 48 catch (Exception ex) 49 { 50 throw new Exception(ex.Message); 51 } 52 return list; 53 }
1、 T t = default(T); 表示获得T类型
2、 t = Activator.CreateInstance<T>(); 根据类型创建对象
3、获得所有的属性
propertypes = t.GetType().GetProperties();
4、 pro.SetValue(t, value, null);设置相应对象的属性值