List转DataTable(反射)
/// <summary>
??????? /// 將集合類轉換成DataTable
??????? /// </summary>
??????? /// <param name="list">集合</param>
??????? /// <returns></returns>
??????? public static DataTable ToDataTable(IList list)
??????? {
??????????? DataTable result = new DataTable();
??????????? if (list.Count > 0)
??????????? {
??????????????? PropertyInfo[] propertys = list[0].GetType().GetProperties();
??????????????? foreach (PropertyInfo pi in propertys)
??????????????? {
??????????????????? result.Columns.Add(pi.Name, pi.PropertyType);
??????????????? }
??????????????? 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();
??????????????????? result.LoadDataRow(array, true);
??????????????? }
??????????? }
??????????? return result;
??????? }
??????? /// <summary>
??????? /// 將泛型集合類轉換成DataTable
??????? /// </summary>
??????? /// <typeparam name="T">集合項類型</typeparam>
??????? /// <param name="list">集合</param>
??????? /// <returns>數據集(表)</returns>
??????? public static DataTable ToDataTable<T>(IList<T> list)
??????? {
??????????? return ConvertX.ToDataTable<T>(list, null);
??????? }
??????? /// <summary>
??????? /// 將泛型集合類轉換成DataTable
??????? /// </summary>
??????? /// <typeparam name="T">集合項類型</typeparam>
??????? /// <param name="list">集合</param>
??????? /// <param name="propertyName">需要返回的列的列名</param>
??????? /// <returns>數據集(表)</returns>
??????? public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
??????? {
??????????? List<string> propertyNameList = new List<string>();
??????????? if (propertyName != null)
??????????????? propertyNameList.AddRange(propertyName);
??????????? DataTable result = new DataTable();
??????????? if (list.Count > 0)
??????????? {
??????????????? PropertyInfo[] propertys = list[0].GetType().GetProperties();
??????????????? foreach (PropertyInfo pi in propertys)
??????????????? {
??????????????????? if (propertyNameList.Count == 0)
??????????????????? {
??????????????????????? result.Columns.Add(pi.Name, pi.PropertyType);
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? if (propertyNameList.Contains(pi.Name))
??????????????????????????? result.Columns.Add(pi.Name, pi.PropertyType);
??????????????????? }
??????????????? }
??????????????? for (int i = 0; i < list.Count; i++)
??????????????? {
??????????????????? ArrayList tempList = new ArrayList();
??????????????????? foreach (PropertyInfo pi in propertys)
??????????????????? {
??????????????????????? if (propertyNameList.Count == 0)
??????????????????????? {
??????????????????????????? object obj = pi.GetValue(list[i], null);
??????????????????????????? tempList.Add(obj);
??????????????????????? }
??????????????????????? else
??????????????????????? {
??????????????????????????? if (propertyNameList.Contains(pi.Name))
??????????????????????????? {
??????????????????????????????? object obj = pi.GetValue(list[i], null);
??????????????????????????????? tempList.Add(obj);
??????????????????????????? }
??????????????????????? }
??????????????????? }
??????????????????? object[] array = tempList.ToArray();
??????????????????? result.LoadDataRow(array, true);
??????????????? }
??????????? }
??????????? return result;
??????? }
轉載于:https://www.cnblogs.com/linyijia/archive/2010/12/31/1923091.html
總結
以上是生活随笔為你收集整理的List转DataTable(反射)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件加密技巧分析
- 下一篇: C语言中的EOF符号常量