在实际项目中,用到了将集合转换为DataTable,就试着封装了一个方法,记录一下。
代码using System;using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Wolfy.List2DataTable
{
class Program
{
static void Main(string[] args)
{
List
{
new Person(){ ID=1, Gender=false, Name="wolfy1"},
new Person(){ ID=2, Gender=false, Name="wolfy2"},
new Person(){ ID=3, Gender=false, Name="wolfy3"},
new Person(){ ID=4, Gender=false, Name="wolfy4"},
new Person(){ ID=5, Gender=false, Name="wolfy5"},
};
DataTable dt = List2DataTable
Console.WriteLine("转换结束");
Console.Read();
}
///
/// 将泛型集合转换为datatable
///
///
///
///
static DataTable List2DataTable
{
if (entities == null)
{
throw new ArgumentNullException("转换的集合为空");
}
Type type = typeof(TEntity);
PropertyInfo[] properties = type.GetProperties();
DataTable dt = new DataTable(type.Name);
foreach (var item in properties)
{
dt.Columns.Add(new DataColumn(item.Name) { DataType = item.PropertyType });
}
foreach (var item in entities)
{
DataRow row = dt.NewRow();
foreach (var property in properties)
{
row[property.Name] = property.GetValue(item);
}
dt.Rows.Add(row);
}
return dt;
}
}
public class Person
{
public int ID { set; get; }
public string Name { set; get; }
public bool Gender { set; get; }
}
}
测试结果:


![[工具类]泛型集合转换为DataTable [工具类]泛型集合转换为DataTable](http://www.mshxw.com/aiimages/31/231923.png)
