首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IQueryable和IEnumerable有什么不同

IQueryable和IEnumerable有什么不同
EN

Stack Overflow用户
提问于 2010-03-12 22:22:40
回答 3查看 92.4K关注 0票数 156

我对其中的区别感到困惑。作为.Net的新手,我知道我可以使用Linq扩展来查询IEnumerables。那么这个IQueryable是什么,它有什么不同呢?

另请参阅与此问题重叠的What is the difference between IQueryable[T] and IEnumerable[T]?

EN

回答 3

Stack Overflow用户

发布于 2010-03-12 22:24:37

“主要区别在于为IQueryable定义的扩展方法采用表达式对象而不是Func对象,这意味着它接收的委托是表达式树而不是要调用的方法。IEnumerable非常适合处理内存中的集合,但IQueryable允许使用远程数据源,如数据库或web服务。”

来源:here

票数 36
EN

Stack Overflow用户

发布于 2010-03-12 22:37:55

主要区别在于,IEnumerable将始终枚举其所有元素,而IQueryable将基于查询枚举元素,甚至执行其他操作。查询是一个表达式( .Net代码的数据表示),IQueryProvider必须探索/解释/编译/任何方式才能生成结果。

拥有查询表达式有两个优点。

第一个优势是优化。因为像“Where”这样的修饰符包含在查询表达式中,所以IQueryProvider可以应用原本不可能实现的优化。提供者可以使用哈希表来定位具有给定键的项,而不是返回所有元素,然后由于“Where”子句而丢弃大部分元素。

第二个优势是灵活性。因为表达式是可探索的数据结构,所以您可以执行诸如序列化查询并将其发送到远程计算机之类的操作。linq-to-sql)。

票数 11
EN

Stack Overflow用户

发布于 2010-03-12 22:24:10

IQueriable与IEnumerable相同,但它还提供了额外的功能,以便使用Linq实现自定义查询。以下是关于MSDN的描述:http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2433306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档