.net - 用简短的语言解释为什么需要 IQueryable<T>

标签 .net linq ienumerable iqueryable

this ... MSDN page, IQueryable(Of T) Interface .你能更好地解释为什么我们需要一个标记接口(interface),它不会在 IEnumerable 上添加任何方法吗?

最佳答案

IQueryable<T> 还扩展 IQueryable .基本上是 IQueryable可以以强类型的方式枚举。 (IQueryableIEnumerable<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/

相关文章:

c# - 命名空间还是程序集?

c# - 在实时服务器上发送电子邮件时出错

c# - 实例化空 IQueryable 以与 Linq to sql 一起使用

c# - 为什么我不能编辑 IEnumerable 的元素?

c# - Enumerable.Repeat 有一些内存问题?

c# - 如何将对象从 IEnumerable 集合添加到数据库?

c# - 是否可以针对 objective-c # 代码在外部运行 WatiN 测试代码?

c# - 如何让这个异常处理代码遵守DRY原则?

.net - 在选择部分中使用子选择的 Linq to Entities

c# - Ienumerable concat 不适用于每个循环