C# IList<T>转为DataTable

本文详细解释了在使用WebUtil类将IList&lt;T&gt;转换为DataTable时遇到的异常问题,并提供了解决方案。通过分析代码实现,发现异常源于数据集不支持Nullable类型,文章提供了修改方法来避免此类错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

转载于:https://www.cnblogs.com/z_lb/p/3419646.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值