代码之家  ›  专栏  ›  技术社区  ›  jcollum

IQueryable<T>是否仅从Linq to Sql或Linq to Entities类返回?

  •  1
  • jcollum  · 技术社区  · 15 年前

    在我正在读的《C#2010中的Pro Linq》(APress、Freeman和Ratz)一书中,作者指出IQueryable将仅从Linq to Sql命名空间中的类返回,而不是从常规Linq命名空间中返回。我对此感到很惊讶,因为我认为任何一个在最后有一个地方的东西都必须是可以解决的。原来我错了,哪里是IEnumerable的扩展。自 IQueryable<T> : IEnumerable<T> ,您可以在其中任何一个上附加where子句。

    作者是对的吗?

    我说的是框架类,不是任何最终用户生成的代码。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Daniel Brückner    15 年前

    Enumerable Queryable 班级。

    是用于LINQ to对象的 IEnumerable<T> 并使用委托作为参数。 可查询的 适用于需要检查和处理查询并因此使用 IQueryable<T> IEnumerable<T>

    对于上述两个O/R映射器,它们必须将查询转换为SQL查询。这将不适用于委托(除非有人分析IL代码或做其他疯狂的事情)和中的扩展方法 可查询的 正在使用 expression trees 作为参数而不是委托。

    除了上面提到的O/R映射器 WCF Data Services IQueryable<T> DataServiceQuery<TElement> )并将表达式树形式的查询转换为url。

        2
  •  0
  •   John Saunders    15 年前

    作者错了。任何类都可以有一个返回 IQueryable<T>

    事实上,你确定作者遗漏了LINQ到实体吗?linqtosql并不是很受欢迎,但是linqtoentities是微软花费时间和金钱的地方,而不是linqtosql。