1 /// <summary>
2 /// 数据读取扩展类
3 /// </summary>
4 public static class DataReadExtend
5 {
6 /// <summary>
7 /// 实体类转化
8 /// </summary>
9 /// <param name="DataReader">SqlDataReader</param>
10 /// <returns></returns>
11 public static List<T> ToList<T>(this SqlDataReader DataReader) where T : class
12 {
13 List<T> result = null;
14 Type type = typeof(T);
15 var method = type.GetProperties();
16 if (DataReader.HasRows)
17 {
18 result = new List<T>();
19 while (DataReader.Read())
20 {
21 var func = Activator.CreateInstance(type);
22 foreach (PropertyInfo p in method)
23 {
24 if (DataReader[p.Name] == System.DBNull.Value)
25 {
26 continue;
27 }
28 else
29 p.SetValue(func, DataReader[p.Name], null);
30 }
31 result.Add(func as T);
32 }
33 }
34 return result;
35
36 }
37 /// <summary>
38 /// 转换单个对象
39 /// </summary>
40 /// <param name="DataReader">DataReader</param>
41 /// <returns></returns>
42 public static T ToModel<T>(this SqlDataReader DataReader) where T : class
43 {
44 T result = default(T);
45 Type type = typeof(T);
46 var method = type.GetProperties();
47 if (DataReader.HasRows)
48 {
49
50 while (DataReader.Read())
51 {
52 var func = Activator.CreateInstance(type);
53 foreach (PropertyInfo p in method)
54 {
55 if (DataReader[p.Name] == System.DBNull.Value)
56 {
57 continue;
58 }
59 else
60 p.SetValue(func, DataReader[p.Name], null);
61 }
62 result = func as T;
63 }
64 }
65 return result;
66
67 }
68 /// <summary>
69 /// DataTable转成对象
70 /// </summary>
71 /// <param name="table"></param>
72 /// <returns></returns>
73 public static List<T> ToList<T>(this DataTable table) where T : class
74 {
75 List<T> result = null;
76 Type type = typeof(T);
77 if (table.Rows.Count > 0)
78 {
79 result = new List<T>();
80 foreach (DataRow item in table.Rows)
81 {
82 var c = Activator.CreateInstance(type);
83 foreach (PropertyInfo p in c.GetType().GetProperties())
84 {
85 if (item[p.Name] == System.DBNull.Value)
86 {
87 continue;
88 }
89 else
90 p.SetValue(c, item[p.Name], null);
91 }
92 result.Add(c as T);
93 }
94 }
95 return result;
96
97 }
98
99 }