将数据集转换为IQueryable <t>或IEnumerable <t> </t> </t>

时间:2009-02-02 21:36:02

标签: linq datatable ienumerable iqueryable

由于还没有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猛拉它,所以我不知道该怎么做。

3 个答案:

答案 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]
    };