IQueryable与IEnumberable
IQueryable和IEnumerable 是我们.net常用的两个接口类,用法几乎一样,无论我们使用筛选丶排序丶聚合函数,两种方法都可以返回我们想要的数据。他们的区别在于过滤逻辑在哪里执行,IEnumerable 把我们需要查询的数据全部取到内存中,在客户端进行筛选。而IQueryable则是把我们的操作翻译为SQL语句在服务端进行筛选然后返回数据。
两种方法没有所谓的性能优势,要看自己的应用场景。
1.IQueryable的延迟执行机制
IQueryable只是表示一个可以放到数据库中执行的查询,他不会立即执行,只是表示可以被执行而已。想让他执行就需要使用终结语句,如遍历,ToArray,ToList,Min,Max,Cont等。OrderBy,Include,Skip,Task等方法是非立即执行方法。判断一个方法是否为立即执行方法的简单方式是,查看他的返回值类型是否为IQueryable,如果是那他就是非立即执行方法,否则就是立即执行方法。
IQueryable的延迟执行可以让我们在开发中可以先使用IQueryable拼接出复杂的查询条件,然后再去执行查询
IQueryable的复用
IQueryable是一个待查询的逻辑,因此他是可以被复用的。
using SQLContext _db = new SQLContext();//这里先用IQueryable创建一个查询IQueryable<User> list = _db.Users.Where(a => a.Address == "上海");//然后获取满足条件的数据条数list.Count();//然后对list变量调用where方法进一步过滤var list2 = list.Where(x => x.Name == "李四").ToArray();
IQueryable与IEnumberable相关推荐
- C#中IQueryable和IEnumberable的区别
IQueryable和IEnumberable的区别主要在查询方面有区别 IQueryable查询时间是先把skip和Take翻译成sql语句,去数据库执行完成后把数据加载到内存中 IEnumbera ...
- LINQ中IQueryable 和IEnumberable的区别?用错问题很大。
为啥要对比IQueryable和IEnumberable呢?有一次项目已经发布到生产环境,但是其中一个列表页面特别的慢,明明在测试环境正常,到线上怎么慢了呢?于是就检查这个页面的代码,表面看linq的 ...
- 最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary
本文对常用的数据结构详述:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryabl ...
- 最全的数据结构解析与归纳
本文对常用的数据结构:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryable, ...
- ASP.NET Core 技术内幕与项目实战读后感
前几天拿到了杨中科老师的新书<ASP.NET Core 技术内幕与项目实战>,迫不及待的"两"口气读完了.用一句话来总结,这是一本写给.NET开发者的非常实用的接地气的 ...
- .net 常见面试问题-2021-08
#一.委托和事件 委托 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时 ...
- IQueryable接口与IEnumberable接口的区别
简单解释一下:从网上看到IQueryable接口与IEnumberable接口的区别,都是简单的说了一下下面第一点的原因,没有实际的代码,我就简单的在叙述一下其区别的详细的过程. 1:这是从网上找的区 ...
- 一个简单问题引发对IEnumerable和IQueryable的思考
问题概述: 首先看下图,有客户表和客户负责人表关系是多对多,访问数据库使用的是EF所以这里我们开启了延迟加载,需求就是将每个客户的所有负责人逗号拼接显示在负责人这一栏位, 对你没看错需求就是这么 ...
- IQueryable和IEnumerable,IList的区别
IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution) IQueryable和IEnumerabl ...
最新文章
- MXNET源码中NDArray数据的获取和打印
- python booleans_Python 2.1 BooleansComparisons
- 数据结构:下列选项中,不可能是快速排序第2趟排序结果的是(2019年全国试题10)
- 对java:comp/env的研究
- MFC和c#中模拟对另一进程的窗口按钮点击
- android 获取应用的资源id和uri
- Git版本控制基本使用知识整理
- 锁屏后重新登录程序无响应问题分析
- 无盘服务器chkdsk *: /f)修复命令,让你的电脑运行更快点 使用CHKDSK/F磁盘修复命令...
- oracle 11g duplicate database基于备份复制数据库(四)
- 示例-Luat示例-HTTP
- STM32MP157开发板调试笔记
- pikachu靶场SQL,sqlmap解法
- 关于视频的YUV格式介绍
- grep命令 linux
- 多值依赖与部分函数依赖 转
- iptables实战演练
- 当生命科学遇到云计算——IBM Bluemix医疗行业应用沙龙精彩回顾
- centos6关闭防火墙(zonealarm pro防火墙)
- matlab平衡小车数学模型PID,自平衡小车控制系统设计.doc
热门文章
- 各种编码及密码原理(边积累边更新)
- 技术分享 | 遥控器控制(Joystick)
- 创科CK-RTU-360系列RTU遥测终端机
- js中的join()方法
- Camera手动对焦和设置对焦框
- Python+Selenium4元素定位_web自动化(3)
- IBAN 国际银行帐户号码 + Swift code + BIC代码
- redis对象保存方式?
- 工作交接,你不知道的那点事
- oracle 存储过程select into,01. 把存储过程结果集SELECT INTO到临时表(示例代码)