public static DataTable getFTList(this IEnumerable<UpfeleTablesMapping.fileType> enumer)
{
var datatable = new DataTable();
foreach (PropertyDescriptor item in TypeDescriptor.GetProperties(typeof(UpfeleTablesMapping.fileType)))
{
datatable.Columns.Add(item.Name, item.PropertyType);
}
foreach (UpfeleTablesMapping.fileType ft in enumer)
{
var row = datatable.NewRow();
foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(UpfeleTablesMapping.fileType)))
{
row[dp.Name] = dp.GetValue(ft);
}
datatable.Rows.Add(row);
}
return datatable;
}
老是在row[dp.Name] = dp.GetValue(ft);报错了原因是DataSet 不支持 System.Nullable<>。求助博客朋友,以及it界人士 该如何解决
单纯从代码看,可能是IEnumerable<T>的T不是基本类型,或是int?之类的可空值类型。
row[dp.Name] = dp.GetValue(ft);修改为
if(dp.GetValue(ft)==null)
row[dp.Name]=DBNull;//或者期望的默认值
else
row[dp.Name]=dp.GetValue(ft);
恩好的我先试试吧谢谢你
@mengqiaofa: 这是个思路,直接用会出错的