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相关推荐

  1. C#中IQueryable和IEnumberable的区别

    IQueryable和IEnumberable的区别主要在查询方面有区别 IQueryable查询时间是先把skip和Take翻译成sql语句,去数据库执行完成后把数据加载到内存中 IEnumbera ...

  2. LINQ中IQueryable 和IEnumberable的区别?用错问题很大。

    为啥要对比IQueryable和IEnumberable呢?有一次项目已经发布到生产环境,但是其中一个列表页面特别的慢,明明在测试环境正常,到线上怎么慢了呢?于是就检查这个页面的代码,表面看linq的 ...

  3. 最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary

    本文对常用的数据结构详述:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryabl ...

  4. 最全的数据结构解析与归纳

    本文对常用的数据结构:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryable, ...

  5. ASP.NET Core 技术内幕与项目实战读后感

    前几天拿到了杨中科老师的新书<ASP.NET Core 技术内幕与项目实战>,迫不及待的"两"口气读完了.用一句话来总结,这是一本写给.NET开发者的非常实用的接地气的 ...

  6. .net 常见面试问题-2021-08

    #一.委托和事件 委托 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时 ...

  7. IQueryable接口与IEnumberable接口的区别

    简单解释一下:从网上看到IQueryable接口与IEnumberable接口的区别,都是简单的说了一下下面第一点的原因,没有实际的代码,我就简单的在叙述一下其区别的详细的过程. 1:这是从网上找的区 ...

  8. 一个简单问题引发对IEnumerable和IQueryable的思考

    问题概述:    首先看下图,有客户表和客户负责人表关系是多对多,访问数据库使用的是EF所以这里我们开启了延迟加载,需求就是将每个客户的所有负责人逗号拼接显示在负责人这一栏位, 对你没看错需求就是这么 ...

  9. IQueryable和IEnumerable,IList的区别

    IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution) IQueryable和IEnumerabl ...

最新文章

  1. MXNET源码中NDArray数据的获取和打印
  2. python booleans_Python 2.1 BooleansComparisons
  3. 数据结构:下列选项中,不可能是快速排序第2趟排序结果的是(2019年全国试题10)
  4. 对java:comp/env的研究
  5. MFC和c#中模拟对另一进程的窗口按钮点击
  6. android 获取应用的资源id和uri
  7. Git版本控制基本使用知识整理
  8. 锁屏后重新登录程序无响应问题分析
  9. 无盘服务器chkdsk *: /f)修复命令,让你的电脑运行更快点 使用CHKDSK/F磁盘修复命令...
  10. oracle 11g duplicate database基于备份复制数据库(四)
  11. 示例-Luat示例-HTTP
  12. STM32MP157开发板调试笔记
  13. pikachu靶场SQL,sqlmap解法
  14. 关于视频的YUV格式介绍
  15. grep命令 linux
  16. 多值依赖与部分函数依赖 转
  17. iptables实战演练
  18. 当生命科学遇到云计算——IBM Bluemix医疗行业应用沙龙精彩回顾
  19. centos6关闭防火墙(zonealarm pro防火墙)
  20. matlab平衡小车数学模型PID,自平衡小车控制系统设计.doc

热门文章

  1. 各种编码及密码原理(边积累边更新)
  2. 技术分享 | 遥控器控制(Joystick)
  3. 创科CK-RTU-360系列RTU遥测终端机
  4. js中的join()方法
  5. Camera手动对焦和设置对焦框
  6. Python+Selenium4元素定位_web自动化(3)
  7. IBAN 国际银行帐户号码 + Swift code + BIC代码
  8. redis对象保存方式?
  9. 工作交接,你不知道的那点事
  10. oracle 存储过程select into,01. 把存储过程结果集SELECT INTO到临时表(示例代码)