/// <summary> /// DataSet轉換為實體類 /// </summary> /// <typeparam name="T">實體類</typeparam> /// <param name="p_DataSet">DataSet</param> /// <param name="p_TableIndex">待轉換數據表索引</param> /// <returns>實體類</returns> public static T DataSetToEntity<T>(DataSet p_DataSet, int p_TableIndex) { if (p_DataSet == null || p_DataSet.Tables.Count < 0) return default(T); if (p_TableIndex > p_DataSet.Tables.Count - 1) return default(T); if (p_TableIndex < 0) p_TableIndex = 0; if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0) return default(T); DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0]; // 返回值初始化 T _t = (T)Activator.CreateInstance(typeof(T)); PropertyInfo[] propertys = _t.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value) { pi.SetValue(_t, p_Data[pi.Name.ToUpper()], null); } else { pi.SetValue(_t, null, null); } } return _t; } /// <summary> /// DataSet轉換為實體列表 /// </summary> /// <typeparam name="T">實體類</typeparam> /// <param name="p_DataSet">DataSet</param> /// <param name="p_TableIndex">待轉換數據表索引</param> /// <returns>實體類列表</returns> public static IList<T> DataSetToEntityList<T>(DataSet p_DataSet, int p_TableIndex) { if (p_DataSet == null || p_DataSet.Tables.Count < 0) return default(IList<T>); if (p_TableIndex > p_DataSet.Tables.Count - 1) return default(IList<T>); if (p_TableIndex < 0) p_TableIndex = 0; if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0) return default(IList<T>); DataTable p_Data = p_DataSet.Tables[p_TableIndex]; // 返回值初始化 IList<T> result = new List<T>(); for (int j = 0; j < p_Data.Rows.Count; j++) { T _t = (T)Activator.CreateInstance(typeof(T)); PropertyInfo[] propertys = _t.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value) { pi.SetValue(_t, p_Data.Rows[j][pi.Name.ToUpper()], null); } else { pi.SetValue(_t, null, null); } } result.Add(_t); } return result; }