List对象集合转换成DataSet
1 public DataSet ConvertToDataSet<T>(IList<T> list) 2 { 3 if (list == null || list.Count <= 0) 4 { 5 return null; 6 } 7 DataSet ds = new DataSet(); 8 DataTable dt = new DataTable(typeof(T).Name); 9 DataColumn column; 10 DataRow row; 11 System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); 12 foreach (T t in list) 13 { 14 if (t == null) 15 { 16 continue; 17 } 18 row = dt.NewRow(); 19 for (int i = 0, j = myPropertyInfo.Length; i < j; i++) 20 { 21 System.Reflection.PropertyInfo pi = myPropertyInfo[i]; 22 string name = pi.Name; 23 24 25 26 if (dt.Columns[name] == null) 27 { 28 var type = pi.PropertyType; 29 if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) 30 { 31 type = type.GetGenericArguments()[0]; 32 } 33 column = new DataColumn(name, type); 34 dt.Columns.Add(column); 35 } 36 row[name] = pi.GetValue(t, null); 37 } 38 dt.Rows.Add(row); 39 } 40 ds.Tables.Add(dt); 41 return ds; 42 }
List对象集合转换成DataTable
1 public static DataTable ToDataTable<T>(IEnumerable<T> list) 2 { 3 PropertyInfo[] modelItemType = typeof(T).GetProperties(); 4 DataTable dataTable = new DataTable(); 5 dataTable.Columns.AddRange(modelItemType.Select(Columns => new DataColumn(Columns.Name, Columns.PropertyType)).ToArray()); 6 if (list.Count() > 0) 7 { 8 for (int i = 0; i < list.Count(); i++) 9 { 10 ArrayList tempList = new ArrayList(); 11 foreach (PropertyInfo pi in modelItemType) 12 { 13 object obj = pi.GetValue(list.ElementAt(i), null); 14 tempList.Add(obj); 15 } 16 object[] dataRow = tempList.ToArray(); 17 dataTable.LoadDataRow(dataRow, true); 18 } 19 } 20 return dataTable; 21 }
浙公网安备 33010602011771号