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 }