码迷,mamicode.com
首页 > 编程语言 > 详细

IEnumerable IQueryable

时间:2015-01-14 09:39:17      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

LINQ2Object的处理结果是把LINQ表达式映射成对应的委托,而LINQ2SQL则是保存了一系列的"步骤"---表达式树的处理方式.两者的区别简单的理解就是LINQ2Object将数据存放在内存中.而LINQ2SQL则是把数据存放在远程的服务器中.

.AsEnumerable() 和 .ToList() 的区别:

.AsEnumerable()延迟执行,不会立即执行。当你调用.AsEnumerable()的时候,实际上什么都没有发生。 .

ToList()立即执行 当你需要操作结果的时候,用.ToList(),否则,如果仅仅是用来查询不需要进一步使用结果集,并可以延迟执行,就用.AsEnumerable()/IEnumerable /IQueryable

.AsEnumerable()虽然延迟执行,但还是访问数据库,而.ToList()直接取得结果放在内存中。比如我们需要显示两个部门的员工时,部门可以先取出放置在List中,然后再依次取出各个部门的员工,这时访问的效率要高一些,因为不需要每次都访问数据库去取出部门。

IQueryable实现了IEnumberable接口。但IEnumerable 换成IQueryable后速度提高很多。原因: IQueryable接口与IEnumberable接口的区别: IEnumerable 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。 IEnumerable跑的是Linq to Object,强制从数据库中读取所有数据到内存先。

IEnumerable和IQueryable之间的区别不难理解.更多时候我们在查询序列的时候.要考虑到底是本地查询好.还是远程查询好.至于哪种查询更好.没有绝对的说法.适合应用环境,已经能发挥最大效应的.那就是最好的

从LINQ技术角度来说
IEnumerable 对应 LINQ To Object
IQueryable 对应的是 LINQ To Entity 或者说是EntityFramework.

IEnumerable IQueryable

标签:

原文地址:http://www.cnblogs.com/test1001/p/4223136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!