反射DataTable转实体类

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Data;
 4 using System.Reflection;
 5 
 6 namespace Dll
 7 {
 8     public static class ToEntity
 9     {
10         /// <summary>
11         /// 将DataTable转换成实体类
12         /// </summary>
13         /// <typeparam name="T">实体类</typeparam>
14         /// <param name="dt">DataTable</param>
15         /// <returns></returns>
16         public static List<T> DtConvertToModel<T>(DataTable dt) where T:new()
17         {
18             List<T> ts = new List<T>();
19             foreach (DataRow dr in dt.Rows)
20             {
21                 T t = new T();
22                 foreach (PropertyInfo pi in t.GetType().GetProperties())
23                 {
24                     if (dt.Columns.Contains(pi.Name))
25                     {
26                         if (!pi.CanWrite) continue;
27                         var value = dr[pi.Name];
28                         if (value!= DBNull.Value)
29                         {
30                             switch (pi.PropertyType.FullName)
31                             {
32                                 case "System.Decimal":
33                                     pi.SetValue(t, decimal.Parse(value.ToString()), null);
34                                     break;
35                                 case "System.String":
36                                     pi.SetValue(t, value.ToString(), null);
37                                     break;
38                                 case "System.Int32":
39                                     pi.SetValue(t, int.Parse(value.ToString()), null);
40                                     break;
41                                 default:
42                                     pi.SetValue(t, value, null);
43                                     break;
44                             }
45                         }
46                     }                    
47                 }
48                 ts.Add(t);
49             }
50             return ts;
51         }
52     }
53 }
原文地址:https://www.cnblogs.com/chenyanbin/p/11123685.html