反射DataTable转实体类

Posted chenyanbin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射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 

 

以上是关于反射DataTable转实体类的主要内容,如果未能解决你的问题,请参考以下文章

DataTable转实体类

Datatable转实体 实体转换辅助类

DataTable转实体类集合

基于Emit的C#下DataTable转实体类方法,一直报错.

DataTable 转实体

DataTable 转实体