将指定的集合转换成DataTable[c#基础类]
时间:2020-04-17 发布者: 访问量:3072
using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; namespace Common.Utilities { public static class ListExtensions { /// <summary> /// 将指定的集合转换成DataTable。 /// </summary> /// <param name="list">将指定的集合。</param> /// <returns>返回转换后的DataTable。</returns> public static DataTable ToDataTable(this IList list) { DataTable table = new DataTable(); if (list.Count > 0) { PropertyInfo[] propertys = list[0].GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { Type pt = pi.PropertyType; if ((pt.IsGenericType) && (pt.GetGenericTypeDefinition() == typeof(Nullable<>))) { pt = pt.GetGenericArguments()[0]; } table.Columns.Add(new DataColumn(pi.Name, pt)); } for (int i = 0; i < list.Count; i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in propertys) { object obj = pi.GetValue(list[i], null); tempList.Add(obj); } object[] array = tempList.ToArray(); table.LoadDataRow(array, true); } } return table; } public static DataTable ToDataTable<T>(this List<T> list) { DataTable table = new DataTable(); //创建列头 PropertyInfo[] propertys = typeof(T).GetProperties(); foreach (PropertyInfo pi in propertys) { Type pt = pi.PropertyType; if ((pt.IsGenericType) && (pt.GetGenericTypeDefinition() == typeof(Nullable<>))) { pt = pt.GetGenericArguments()[0]; } table.Columns.Add(new DataColumn(pi.Name, pt)); } //创建数据行 if (list.Count > 0) { for (int i = 0; i < list.Count; i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in propertys) { object obj = pi.GetValue(list[i], null); tempList.Add(obj); } object[] array = tempList.ToArray(); table.LoadDataRow(array, true); } } return table; } } }
相关信息
用户评论
猜你喜欢
生活励志
生活文摘
生活福利
生活编程