DataTable转换成List<T>

 1       /// <summary>
 2         /// 将DataTable数据源转换成实体类
 3         /// </summary>
 4         public static List<T> ConvertToModel<T>(DataTable dt)
 5         {
 6             if (dt==null)
 7             {
 8                 return null;
 9             }
10             var list = new List<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                         try
21                         {
22                             if (!Convert.IsDBNull(item[i]))
23                             {
24                                 object v = null;
25                                 if (info.PropertyType.ToString().Contains("System.Nullable"))
26                                 {
27                                     v = Convert.ChangeType(item[i], Nullable.GetUnderlyingType(info.PropertyType));
28                                 }
29                                 else
30                                 {
31                                     v = Convert.ChangeType(item[i], info.PropertyType);
32                                 }
33                                 info.SetValue(s, v, null);
34                             }
35                         }
36                         catch (Exception ex)
37                         {
38                             throw new Exception("字段[" + info.Name + "]转换出错," + ex.Message);
39                         }
40                     }
41                 }
42                 list.Add(s);
43             }
44             return list;
45         }

 

posted @ 2020-03-31 15:51  饮冰凉热血  阅读(328)  评论(1)    收藏  举报