1 /// <summary>
2 /// DataSet转换为实体类
3 /// </summary>
4 /// <typeparam name="T">实体类</typeparam>
5 /// <param name="p_DataSet">DataSet</param>
6 /// <param name="p_TableIndex">待转换数据表索引</param>
7 /// <returns>实体类</returns>
8 public static T DataSetToEntity<T>(DataSet p_DataSet, int p_TableIndex)
9 {
10 if (p_DataSet == null || p_DataSet.Tables.Count < 0)
11 return default(T);
12 if (p_TableIndex > p_DataSet.Tables.Count - 1)
13 return default(T);
14 if (p_TableIndex < 0)
15 p_TableIndex = 0;
16 if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
17 return default(T);
18
19 DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0];
20 // 返回值初始化
21 T _t = (T)Activator.CreateInstance(typeof(T));
22 PropertyInfo[] propertys = _t.GetType().GetProperties();
23 foreach (PropertyInfo pi in propertys)
24 {
25 if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value)
26 {
27 pi.SetValue(_t, p_Data[pi.Name.ToUpper()], null);
28 }
29 else
30 {
31 pi.SetValue(_t, null, null);
32 }
33 }
34 return _t;
35 }
36
37 /// <summary>
38 /// DataSet转换为实体列表
39 /// </summary>
40 /// <typeparam name="T">实体类</typeparam>
41 /// <param name="p_DataSet">DataSet</param>
42 /// <param name="p_TableIndex">待转换数据表索引</param>
43 /// <returns>实体类列表</returns>
44 public static IList<T> DataSetToEntityList<T>(DataSet p_DataSet, int p_TableIndex)
45 {
46 if (p_DataSet == null || p_DataSet.Tables.Count < 0)
47 return default(IList<T>);
48 if (p_TableIndex > p_DataSet.Tables.Count - 1)
49 return default(IList<T>);
50 if (p_TableIndex < 0)
51 p_TableIndex = 0;
52 if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
53 return default(IList<T>);
54
55 DataTable p_Data = p_DataSet.Tables[p_TableIndex];
56 // 返回值初始化
57 IList<T> result = new List<T>();
58 for (int j = 0; j < p_Data.Rows.Count; j++)
59 {
60 T _t = (T)Activator.CreateInstance(typeof(T));
61 PropertyInfo[] propertys = _t.GetType().GetProperties();
62 foreach (PropertyInfo pi in propertys)
63 {
64 if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value)
65 {
66 pi.SetValue(_t, p_Data.Rows[j][pi.Name.ToUpper()], null);
67 }
68 else
69 {
70 pi.SetValue(_t, null, null);
71 }
72 }
73 result.Add(_t);
74 }
75 return result;
76 }