关于IQueryable和IEnumerable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于IQueryable和IEnumerable相关的知识,希望对你有一定的参考价值。

园里对这两个已经有很多文章作了深入的介绍,我总结些,当成笔记用。

一.具体判断用哪个上,如果是运行在本地内存中的,用IEnumerable,枚举该对象时,会立即反应查询结果。

    如果是远程数据源,比如数据库,为优化查询,减少中间环节,要把多条语句先存放到表达式数里,等执行ToList方法时才会去真正调用迭代器GetEnumerator()取值,会去执行IQueryProvider中的Excute方法。得到最终结果,就是延时加载。

二.个人认为在不确认哪个更适用的情况下用IQueryable,因为从逻辑上讲,把所有语句拼接后再执行,加快了程序运行速度,哪怕你集合是放在本地内存中,不是远程数据库,但有时你一个中间语句,可能就已经把数据全取了一遍了。但最终我们要的只是中间的几条数据。 

 

以上是关于关于IQueryable和IEnumerable的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Breeze IQueryable 与 CORS 一起使用?

如何测试我的 Linq IQueryable 是不是已执行

IQueryable 和 IQueryable<T> 是异步的吗?

NHibernate 3 LINQ:如何过滤 IQueryable 以仅选择 T 类及其子类的对象?

IQueryable 和 IEnumerable 有啥区别 [重复]

IQueryable 和 IEnumerable