关于IQueryable和IEnumerable
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于IQueryable和IEnumerable相关的知识,希望对你有一定的参考价值。
园里对这两个已经有很多文章作了深入的介绍,我总结些,当成笔记用。
一.具体判断用哪个上,如果是运行在本地内存中的,用IEnumerable,枚举该对象时,会立即反应查询结果。
如果是远程数据源,比如数据库,为优化查询,减少中间环节,要把多条语句先存放到表达式数里,等执行ToList方法时才会去真正调用迭代器GetEnumerator()取值,会去执行IQueryProvider中的Excute方法。得到最终结果,就是延时加载。
二.个人认为在不确认哪个更适用的情况下用IQueryable,因为从逻辑上讲,把所有语句拼接后再执行,加快了程序运行速度,哪怕你集合是放在本地内存中,不是远程数据库,但有时你一个中间语句,可能就已经把数据全取了一遍了。但最终我们要的只是中间的几条数据。
以上是关于关于IQueryable和IEnumerable的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Breeze IQueryable 与 CORS 一起使用?
IQueryable 和 IQueryable<T> 是异步的吗?
NHibernate 3 LINQ:如何过滤 IQueryable 以仅选择 T 类及其子类的对象?