泛型轉DataTable方法
/// 將集合類轉換成DataTable
/// </summary>
/// <param name="list">集合</param>
/// <returns></returns>
public DataTable ToDataTable(List<GongGaoInfo> 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;
}
/// 將集合類轉換成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, 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, null);
tempList.Add(obj);
}
else
{
if (propertyNameList.Contains(pi.Name))
{
object obj = pi.GetValue(list, null);
tempList.Add(obj);
}
}
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
程式的重用性,完美的體現了
相關文章
- DataTable轉換list泛型集合(反射)泛型反射
- C#中將DataTable型別轉化為泛型集合C#型別泛型
- 泛型類和泛型方法泛型
- java泛型之泛型方法。Java泛型
- 泛型類、泛型方法及泛型應用泛型
- Java泛型知識點:泛型類、泛型介面和泛型方法Java泛型
- 【譯】在非泛型類中建立泛型方法泛型
- 泛型類、泛型方法、型別萬用字元的使用泛型型別字元
- Scala 泛型型別和方法泛型型別
- C# 泛型方法C#泛型
- Java中的泛型方法Java泛型
- 泛型方法的反模式泛型模式
- 轉向Kotlin——泛型Kotlin泛型
- java靜態方法使用泛型Java泛型
- Java基礎之泛型方法Java泛型
- 【java】【泛型】泛型geneticJava泛型
- 泛型--泛型萬用字元和泛型的上下限泛型字元
- Java 中的泛型方法及 FunctionJava泛型Function
- TypeScript 泛型介面和泛型類TypeScript泛型
- Go 泛型之泛型約束Go泛型
- java泛型之泛型陣列。Java泛型陣列
- 擴充套件方法(1) DataTable 和List 相互轉換套件
- jQuery datatable 使用方法jQuery
- 泛型泛型
- 集合框架-泛型方法的概述和使用框架泛型
- 如何用反射呼叫泛型類的方法反射泛型
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- C#:Dictionary轉DataTableC#
- c# DataTable轉ListC#
- DataTable 轉為 List<dynamic>
- 集合框架-通過Object轉型問題引入泛型框架Object泛型
- .NET泛型程式設計簡介 (轉)泛型程式設計
- 型別 VS 泛型型別泛型
- TypeScript 泛型型別TypeScript泛型型別
- 泛型方法、初始集合和集合的遍歷泛型
- Java泛型(類、介面、方法)及萬用字元Java泛型字元
- Java反射—方法的反射、深入瞭解泛型Java反射泛型
- 泛型(一)泛型