【发布时间】:2013-09-03 07:23:15
【问题描述】:
我只是想知道为什么有一个没有通用功能的IQueryable<T> 版本?
【问题讨论】:
-
定义:“提供对未指定数据类型的特定数据源的查询进行评估的功能。”。例如,您可以从 web api 控制器返回匿名类型的数组。
标签: c# iqueryable
我只是想知道为什么有一个没有通用功能的IQueryable<T> 版本?
【问题讨论】:
标签: c# iqueryable
通用的
IQueryable<T>是你在方法中最常使用的那个 签名之类的。 非泛型IQueryable主要存在于 为您提供主要用于动态查询的弱类型入口点 构建场景。
来自LINQ: Building an IQueryable Provider - Part I的马特·沃伦(Matt Warren)
您应该尽可能使用通用的IQueryable<T>。
【讨论】:
我想这与 Jon Skeet 在 Difference between IEnumerable and IEnumerable<T>? 中给出的原因相同,允许在 foreach 循环中使用。 IQuerable 可以转换为IEnumerable,而IQueryable<T> 不会。
另请参阅 Marcin 关于在动态查询构建场景中使用的回答。
【讨论】:
IEnumerable 才能被foreach 循环使用。