由于还没有Linq to DB2(来自IBM!),并且我想在我的代码中处理IQueryables或IEnumerables,我如何将DataTable转换为IQueryable?还是IEnumerable?
我有一个接口和一个与数据表中的列匹配的类......
IQueryable<IMyData> GetAS400Data(..parameters..)
{
DataSet d = GetData();
...
//Some code to convert d to IQueryable<IMyData>
}
DataTable.Rows不支持.AsQueryable,因为MSFT猛拉它,所以我不知道该怎么做。
答案 0 :(得分:18)
table.AsEnumerable()...
table.AsEnumerable().AsQueryable()...
但是,您需要在自己的类型中编写自己的翻译(Select
);并且IQueryable<T>
仍将使用LINQ-to-Objects;使用IQueryable<T>
优于IEnumerable<T>
的唯一目的(在此方案中)是出于其他原因使用表达式 - 可能是dynamic LINQ library。
答案 1 :(得分:1)
Take a look here似乎存在具有DB2实体框架的提供程序。
答案 2 :(得分:1)
你可以使用这样的东西。
DataSet ds = GetData();
DataTable dt= ds.Tables[0];
var query =
from row in dt.AsEnumerable()
select new IMyData()
{
property1= row[0],
property2= row[1]
};