IQueryable接口与IEnumberable区别
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区别的更多相关文章
- Linq之IQueryable接口与IEnumberable区别
IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IEnumerable 包含 ...
- IQueryable接口与IEnumberable 区别
总结一下: IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,t ...
- IQueryable & IEnumberable 区别
Namespace And Inheritances Relations ? 1 2 3 4 5 6 7 8 9 Namespace: System.Collections [ComVisib ...
- IQueryable与IQEnumberable的区别
IEnumberable接口: 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用froeach遍历此object; IQueryable接口 ...
- Entity Framework中IQueryable, IEnumerable, IList的区别[转]
使用工具追踪EF生成的SQL 使用Entity Framework等ORM框架的时候,SQL对于使用者来说是透明的,往往很多人也不关心ORM所生成的SQL,然而系统出现性能问题的时候就必须关注生成的S ...
- C#编程之IList<T>、List<T>、ArrayList、IList, ICollection、IEnumerable、IEnumerator、IQueryable 和 IEnumerable的区别
额...今天看了半天Ilist<T>和List<T>的区别,然后惊奇的发现使用IList<T>还是List<T>对我的项目来说没有区别... 在C#中 ...
- C#中IQueryable和IEnumerable的区别
最近的一个面试中,被问到IQueryable 和 IEnumerable的区别, 我自己看了一些文章,总结如下: 1. 要明白一点,IQueryable接口是继承自IEnumerable的接口的. 2 ...
- C# IQueryable和IEnumerable的区别
在使用EF查询数据的时候,我们常用的查询数据方式有linq to sql,linq to object, 查询返回的结果有两种类型:IQueryable.IEnumerable,两者内部的处理机制是完 ...
- Entity Framework中IQueryable, IEnumerable, IList的区别(转载)
原文:http://www.cnblogs.com/hiteddy/archive/2011/10/01/Difference_among_IQueryable_IEnumeralb_IList_in ...
随机推荐
- 教程-Delphi7 自带控件安装对应表
原来的控件delphi7里何处寻? 经常有朋友提这样的问题,“我原来在delphi5或者delphi6中用的很熟的控件到哪里去了?是不是在delphi7中没有了呢?这是不是意味着我以前写的代码全都不能 ...
- Modelsim初级使用教程
来源 http://blog.sina.com.cn/s/blog_6c7b6f030101ctlh.html 一. Modelsim简介 Modelsim仿真工具是Model公司开发的.它支持Ver ...
- ios开发 UITableViewController
iOS中显示数据列表最常用的一个控件,支持垂直滚动 UITableView的两种内置样式UITableViewStylePlain UITableViewStyleGrouped 数据源(data ...
- 【转】ST05
一. SQL Trace 通过SQL跟踪,可以具体查询数据来源于哪些数据库表, 例如:可以查询某个交易(或几个交易)所涉及的数据库表. 为了减少在最终查询结果的工作量,要在屏幕显示你所要显示的数据的前 ...
- android102 查询,插入联系人
package com.itheima.getcontacts; import com.itheima.getcontacts.domain.Contact; import android.net.U ...
- OPTIMIZE TABLE
INNODB 不支持 mysql> OPTIMIZE TABLE t; +--------+----------+----------+----------------------------- ...
- InnoDB的redo日志管理---饶珑辉
http://raolonghui.com/2015/06/24/innodb%E7%9A%84redo%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86/#comment-11
- ODB 下载与安装 (Linux)
http://www.codesynthesis.com/products/odb/download.xhtml Installing ODB on UNIX Introduction This gu ...
- 关于着色器LinearGradient的使用
LinearGradient我们可以将之译为线型渐变.线型渲染等,译成什么不重要,重要的是它的显示效果是什么样子,今天我们就一起来看看. 先来看看LinearGradient的构造方法: /** Cr ...
- UPDATE---修改表中数据
UPDATE table_name SET column1=value1,column2=value2,... [WHERE conditions]; 例: UPDATE userinfo SET n ...