IQueryable和IEnumerable区别

开始了解IQueryable和IEnumerable前,我们先看一下源码

由上面的图片可以得知IQueryable接口继承自IEnumerable接口

由图片可知query返回的IQueryable

由图片可知query返回的IEnumerable
通过在代码中打断点,通过ql server profiler监视工具进行监控,可以得知:

(1)所有对于IEnumerable的过滤,排序等操作,都是在内存中发生的。也就是说数据已经从数据库中获取到了内存中,只是在内存中进行过滤和排序操作。
优点:响应较快;缺点:占内存。

(2)所有对于IQueryable的过滤,排序等操作,只有在数据真正用到的时候才会到数据库中查询。这也是Linq的延迟加载核心所在。
优点:减少带宽 缺点:响应慢

IQueryable的优势是它有表达式树,所有对于IQueryable的过滤,排序等操作,都会先缓存到表达式树中,只有当真正遍历发生的时候,
才会将表达式树由IQueryProvider执行获取数据操作(解析表达式,然后执行取得结果)。

IQueryable和IEnumerable与List的相互转换

List转换为 IQueryable使用 AsQueryable();

List转换为 IEnumerable使用 AsEnumerable();

IQueryable与IEnumerable之间可以相互转换分别使用AsQueryable()、AsEnumerable()

IQueryable和IEnumerable学习相关推荐

  1. IQueryable 和 IEnumerable

    IQueryable 和 IEnumerable 其实,对于上面的即有过虑又有排序的条件查询Linq语句,EF是读取数据库中整个Books表中的数据到内存,还是根据Linq查询语句智能的生成SQL再执 ...

  2. IQueryable和IEnumerable区别

    IQueryable 和IEnumerable总结 1,IEnumerable<T> result = (from t in context.Table  order by t.Id se ...

  3. IQueryable和IEnumerable,IList的区别

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

  4. 对IQueryable和IEnumerable的认识

    ** IQueryable和IEnumerable的区别 public static IQueryable<TSource> Where<TSource>(this IQuer ...

  5. C# IQueryable 和 IEnumerable 的区别

    这是 EF Core 系列的最后一篇文章,按照上一篇的计划,我们最后就讲一讲 IQueryable 和 IEnumerable 的区别. 点击上方或后方蓝字,阅读 EF Core 系列合集. 在前面的 ...

  6. 【C#】IQueryable和IEnumerable的区别

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

  7. C#中的IQueryable vs IEnumerable

    概要 我们在应用开发中经常用到IQueryable 和 IEnumerable两个接口.如果这两个接口搞混,往往会对程序性能造成很大的影响. 本文以一个实例来区分这两个接口,说明在实际开发过程中,这两 ...

  8. IQueryable 和 IEnumerable 的区别

    在C#中使用 Linq to sql 时,经常搞混 IQueryable 和 IEnumerable 这两种类型,本文简单分析下它们之间的区别和使用场景. 前言 不管是Linq to object,还 ...

  9. EFCore——IQueryable与IEnumerable的区别(13)

    IQueryable与IEnumerable的区别 一.IQueryable与IEnumerable的简单实例 二.IQueryable与IEnumerable的区别 一.IQueryable与IEn ...

最新文章

  1. 在CentOS上安装TCP协议性能评测工具tcpdive
  2. C++知识点2——指针、引用基础
  3. 做了这么久SEO优化,想必你很了解“网页快照”!
  4. 接口压测初识java GC
  5. python爬虫从入门到放弃(一)之初识爬虫
  6. 树莓派的几种登录方式及树莓派的网络配置
  7. java反射--注解的定义与运用以及权限拦截
  8. 带有Spring Boot和Spring Cloud的Java微服务
  9. 考试君 - 基于.NET 5语言的Furion框架开发在线考试系统
  10. Spring boot - 整合 Redis缓存(上)
  11. 压缩感知——SP(subspace pursuit)重构算法前言翻译
  12. 2008服务器操作系统安装,Windows server2008服务器安装图文教程
  13. 华为一则面试题登上热搜;大众点评会员因点赞过多被处罚;Linux Kernel 5.12 发布|极客头条...
  14. mysql in 索引_项目中常用到的 19 条 MySQL 优化
  15. linux监控文件变化的程序,在 Linux 下监控程序修改文件
  16. [转]DRP系统知识点总结
  17. 敢问程序员路在何方、路在脚下。
  18. ENVI学习总结(三)——图像几何校正
  19. OpenWrt使能mt7620a第二个uart
  20. 【世界杯赛程表】v1.3 100614 我做的M8软件!

热门文章

  1. BufferedRead
  2. 4天接待180万游客!里昂灯光节的这些作品你都看懂了吗?
  3. 第8周编程题在线测试
  4. 像扫二维码一样的快速录入银行卡信息
  5. 7-9 部落 (25分)
  6. 超越,由此开启——2019甲骨文云大会在上海盛大开幕!
  7. UEFI.源码分析.DXE阶段的执行
  8. html设置表格点击变色,js实现表格变色点击行颜色改变
  9. 计算机网络——互联网上的音/视频服务
  10. hankerrank 刷题二( Python 基础)