首页 新闻 会员 周边

IEnumerable和 IQueryable 转化为DataTable?

0
悬赏园豆:10 [已解决问题] 解决于 2008-10-13 13:17

在linq中怎么实现IEnumerable和 IQueryable 转化为DataTable

 

小潘的主页 小潘 | 初学一级 | 园豆:15
提问于:2008-10-12 12:43
< >
分享
最佳答案
0

扩展方法:
public static DataTable ConvertToDataTable(this IEnumerable enumerable)
{
    var dataTable = new DataTable();
    foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T))) {
           dataTable.Columns.Add(pd.Name, pd.PropertyType);
    }
    foreach (T item in enumerable) {
           var Row = dataTable.NewRow();
               
       foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))  {
                 Row[pd.Name] = pd.GetValue(item);
       }
    dataTable.Rows.Add(Row);
   }
   return dataTable;

}

 

传统写法:
DataTable table = new DataTable();
table.Columns.Add("UserID", typeof (long));
table.Columns.Add("UserName", typeof (string));

IEnumerable<T> database = //获取数据源;
    foreach (T info in database) {
        DataRow row = dt.NewRow();
        row["ID"] = database.ID;
        row["Name"] = database.Name;
        table.Rows.Add(row);
     }
}
return table;

RicoRui | 老鸟四级 |园豆:3663 | 2008-10-13 10:47
其他回答(1)
0

你好我借用你的扩展方法在   Row[pd.Name] = pd.GetValue(item);这里老实报错,DataSet 不支持 System.Nullable<>。该如何解决呢请告诉下哦

QFAAAAA | 园豆:224 (菜鸟二级) | 2012-01-05 14:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册