【问题标题】:IQueryable vs IQueryable<T>IQueryable 与 IQueryable<T>
【发布时间】:2013-09-03 07:23:15
【问题描述】:

我只是想知道为什么有一个没有通用功能的IQueryable&lt;T&gt; 版本?

【问题讨论】:

  • 定义:“提供对未指定数据类型的特定数据源的查询进行评估的功能。”。例如,您可以从 web api 控制器返回匿名类型的数组。

标签: c# iqueryable


【解决方案1】:

通用的IQueryable&lt;T&gt; 是你在方法中最常使用的那个 签名之类的。 非泛型IQueryable 主要存在于 为您提供主要用于动态查询的弱类型入口点 构建场景

来自LINQ: Building an IQueryable Provider - Part I的马特·沃伦(Matt Warren)

您应该尽可能使用通用的IQueryable&lt;T&gt;

【讨论】:

    【解决方案2】:

    我想这与 Jon Skeet 在 Difference between IEnumerable and IEnumerable<T>? 中给出的原因相同,允许在 foreach 循环中使用。 IQuerable 可以转换为IEnumerable,而IQueryable&lt;T&gt; 不会。

    另请参阅 Marcin 关于在动态查询构建场景中使用的回答。

    【讨论】:

    • 类型不必实现IEnumerable 才能被foreach 循环使用。
    • 虽然在技术上是正确的,但我认为这将是实现那些在幕后使用的迭代器挂钩的最简单途径。您可以对我引用的 SO 问题中提到的任何其他迭代器类型提出相同的论点。
    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多