有this ... MSDN page, IQueryable(Of T) Interface .你能更好地解释为什么我们需要一个标记接口(interface),它不会在 IEnumerable 上添加任何方法吗?
最佳答案
IQueryable<T>
还扩展 IQueryable
.基本上是 IQueryable
可以以强类型的方式枚举。 (IQueryable
和 IEnumerable<T>
都已经扩展了 IEnumerable
,所以它没有在这方面添加任何东西。)
现在,有一个强类型 IQueryable
允许强类型化 LINQ to SQL (etc) - 否则你不能写 Where
没有强制转换的子句等。实际涉及的 LINQ 方法在 Queryable
中。类型,很大程度上反射(reflect)了 Enumerable
方法,但采用表达式树而不是委托(delegate)。 (如果您以前没有使用过表达式树,它们基本上是描述代码的数据结构 - 而委托(delegate)是代码本身。因此您可以执行委托(delegate),但您可以检查表达式树以查看它会做什么。 )
关于.net - 用简短的语言解释为什么需要 IQueryable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1044712/