首页 新闻 搜索 专区 学院

IEnumerable<T>转化成DataTable的转化扩展方法

0
[已解决问题] 解决于 2012-01-31 13:26

 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界人士 该如何解决

mengqiaofa的主页 mengqiaofa | 菜鸟二级 | 园豆:224
提问于:2012-01-05 15:23
< >
分享
最佳答案
0

单纯从代码看,可能是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);

碧落星痕 | 小虾三级 |园豆:708 | 2012-01-05 17:16

恩好的我先试试吧谢谢你

mengqiaofa | 园豆:224 (菜鸟二级) | 2012-01-05 17:19

@mengqiaofa: 这是个思路,直接用会出错的

碧落星痕 | 园豆:708 (小虾三级) | 2012-01-06 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册