月夜钓钱江鱼

醉后不知天在水,满船清梦压星河。

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         }

 

posted on 2023-02-03 14:15  湘灵  阅读(432)  评论(0)    收藏  举报