您的位置:首页 > 编程语言 > C#

C# IList<T>转为DataTable

2013-11-12 15:35 351 查看
public class WebUtil
{

/// <summary>

/// 转换IList<T>为DataTable/// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="list">泛型List集合</param> /// <returns>Datatable 对象</returns>public static DataTable ConvertToDataTable<T>(IList<T> list)
{

DataTable table = CreateTable<T>();

Type entityType = typeof(T);PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);

foreach (T item in list)
{

DataRow row = table.NewRow();

foreach (PropertyDescriptor prop in properties)
{

row[prop.Name] = prop.GetValue(item);

}


table.Rows.Add(row);

}


return table;
}


public static DataTable CreateTable<T>()
{

Type entityType = typeof(T);DataTable table = new DataTable(entityType.Name);PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);


foreach (PropertyDescriptor prop in properties)
{

//解决 DataSet不支持System.Nullable<>”的异常Type colType = prop.PropertyType;if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{

colType = colType.GetGenericArguments()[0];

}

table.Columns.Add(prop.Name, colType);

}


return table;
}

}


//在调用上面的那个类的方法时出现 “DataSet不支持System.Nullable<>”的异常。下面是调用的方式。

IList<PersonInfo> list = GetPersonInfoList();//这是我的列表获取方法。。这里没问题的!!有数据得到!
var dt = WebUtil.ConvertTo<PersonInfo>(list);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: