IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令。也是延迟在我要真正显示数据的时候才执行

演示linq to ef中使用IEnumberable与IQueryable的区别,要用到的SQL Server Profiler工具

下面是 IQueryable<T> :

var student = (from s in stuEntities.Student
orderby s.StudentID
select s).Skip().Take();

生成的SQL:

SELECT * FROM (
select ROW_NUMBER() over(order by id)as row,* from [T_Scripts]
)as t1 where t1.row > 3 and t1.row <= 6

下面是 IEnumerable<T>:

var student = (from s in stuEntities.Student
orderby s.StudentID
select s).AsEnumerable().Skip().Take();

生成的SQL:

SELECT * FROM [T_Scripts]

从上面的执行结果可以看出来, IQueryable 是先将所有LINQ语句转换成命令树,然后通过SQL执行
而IEnumerable就是在 AsEnumerable 之前就立刻生成了SQL语句,后面再由程序Skip,Take

IQueryable接口与IEnumberable区别的更多相关文章

  1. Linq之IQueryable接口与IEnumberable区别

    IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IEnumerable 包含 ...

  2. IQueryable接口与IEnumberable 区别

    总结一下: IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,t ...

  3. IQueryable & IEnumberable 区别

    Namespace And Inheritances Relations ? 1 2 3 4 5 6 7 8 9 Namespace: System.Collections     [ComVisib ...

  4. IQueryable与IQEnumberable的区别

    IEnumberable接口: 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用froeach遍历此object; IQueryable接口 ...

  5. Entity Framework中IQueryable, IEnumerable, IList的区别[转]

    使用工具追踪EF生成的SQL 使用Entity Framework等ORM框架的时候,SQL对于使用者来说是透明的,往往很多人也不关心ORM所生成的SQL,然而系统出现性能问题的时候就必须关注生成的S ...

  6. C#编程之IList<T>、List<T>、ArrayList、IList, ICollection、IEnumerable、IEnumerator、IQueryable 和 IEnumerable的区别

    额...今天看了半天Ilist<T>和List<T>的区别,然后惊奇的发现使用IList<T>还是List<T>对我的项目来说没有区别...  在C#中 ...

  7. C#中IQueryable和IEnumerable的区别

    最近的一个面试中,被问到IQueryable 和 IEnumerable的区别, 我自己看了一些文章,总结如下: 1. 要明白一点,IQueryable接口是继承自IEnumerable的接口的. 2 ...

  8. C# IQueryable和IEnumerable的区别

    在使用EF查询数据的时候,我们常用的查询数据方式有linq to sql,linq to object, 查询返回的结果有两种类型:IQueryable.IEnumerable,两者内部的处理机制是完 ...

  9. Entity Framework中IQueryable, IEnumerable, IList的区别(转载)

    原文:http://www.cnblogs.com/hiteddy/archive/2011/10/01/Difference_among_IQueryable_IEnumeralb_IList_in ...

随机推荐

  1. UVa1424–Salesmen(DP)

    题目大意 给定一个包含n(n<=100)个点的无向连通图和一个长度为L的序列A(L<=200),你的任务是修改尽量少的数,使得序列中的任意两个相邻的数或者相同,或者对应图中两个相邻结点 题 ...

  2. static与线程安全 -摘自网络

    在.Net中,Static会经常和线程的东西扯在一起.写的代码是不是线程安全呢?好多程序员都在想,不过,有时候随便就放过了.真正出问题的时候再想.其实,如果程序员一开始就明白这里面的机制,也许,编写的 ...

  3. DATASNAP复杂中间件的一些处理方法

    1.中间件需要连接SQL SERVER\ORACLE\MYSQL多种数据库,怎么办? [解决]:可以搞多种数据模块池对应多种数据库,一种数据模块池对应一种数据库 2.中间件业务对象多,在一个单元里面定 ...

  4. PHP使用IP地址连接MySQL数据库

    我们通常测试的时候都是用mysql_connect("localhost","usrname","password");的方式来连接MySQ ...

  5. hdu 2102 A计划(优先队列+dfs)

    改了好久,上午来实验室打出来了,运行就是不对,一直找啊找!还是没找到,最后突然停电了,打好的代码还没保存呢! 刚才来的时候又重新打了一遍!!!结果一个小小的错误wrong了好久!!! 在dfs值返回时 ...

  6. javascript-智能社-JS基础B笔记

    运算符 算术:+ 加.- 减.* 乘./ 除.% 取模(也叫取余) 余数就是不能整除的多出来的那部分 比如说 23除以5 等于4.6   保留整数4舍弃小数.6  然后用保留的整数4乘以5等20  最 ...

  7. 【转】Spring的WebServiceTemplate访问WebService的方法及其本质原理

    WebService客户端调用的本质就是将SAOP格式的XML通过通信协议发送到WebService的服务器端,然后接收服务器端返回的XML. 本文简单介绍一下如何通过Spring提供的WebServ ...

  8. linux下查看本机socket端口详细信息

    netstat -paut [root@OA-JRY-SY-FDEP1 nginx-]# netstat -paut Active Internet connections (servers and ...

  9. 判断jsp中是否存在某个javascript函数

    //判断父页是否存在某个javascript函数 function fnExist(fnName) { //return fnName in this && eval(fnName) ...

  10. redis单机及其集群的搭建

    http://www.cnblogs.com/mouseIT/p/5288204.html