【问题标题】:Convert Dataset to IQueryable<T> or IEnumerable<T>将数据集转换为 IQueryable<T> 或 IEnumerable<T>
【发布时间】:2009-02-02 21:36:01
【问题描述】:

由于还没有 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 拉了它,所以我不知道在这里做什么。

【问题讨论】:

  • .AsEnumerable()

标签: linq datatable ienumerable iqueryable


【解决方案1】:
table.AsEnumerable()...

table.AsEnumerable().AsQueryable()...

但是,您需要根据自己的类型编写自己的翻译 (Select); IQueryable&lt;T&gt; 仍将使用 LINQ-to-Objects;使用 IQueryable&lt;T&gt; 而不是 IEnumerable&lt;T&gt; 的唯一目的(在这种情况下)是出于其他原因使用表达式 - 可能是为了 dynamic LINQ library。

【讨论】:

  • 你如何转换另一种方式?从 IQueryable 到 DataTable?
  • IQueryable&lt;T&gt; 本质上是数据视图。原来的DataTable 仍然存在。要创建 DataTable,或许可以查看:stackoverflow.com/questions/545328/…
  • @MarcGravell 可以详细说明如何进行翻译?我试过 IQueryable resultList =(DataSet.Tables[0]).AsEnumerable().AsQueryable();我收到一个错误:无法将 IQueryable 类型转换为 IQueryable 类型。
【解决方案2】:

Take a look here似乎有一个提供DB2实体框架的提供者。

【讨论】:

  • 很遗憾,由于去年的一次不好的经历,EF已经被我排除在外了。这很不幸,因为 EF 是 MSFT 的未来......
  • 然后换工作:)
【解决方案3】:

你可以使用这样的东西。

DataSet ds = GetData();
DataTable dt= ds.Tables[0];
var query =
    from row in dt.AsEnumerable() 
    select new IMyData()
    {
        property1= row[0],
        property2= row[1]
    };

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 2011-07-28
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2012-02-24
    • 2021-12-02
    相关资源
    最近更新 更多