此篇博文承接上一篇博文:

LINQ学习系列-----2.2 迭代器

一.第一次执行

                     废话不多说,上源码:

执行结果下图:

为什么会这样?其实原因很简单 from n in intArray select Square(n) 可以翻译为:Enumerable.Select<int,double>(intArray,n=>Square(n));

看过上一篇文章的基本信息知道一些了,Enumerable.Select就是个迭代器,这也是延迟查询的奥秘。

这个查询变量代表的并不是查询的结果,而更像是一个潜在的执行查询过程。直到该查询变量被赋值给另一个变量,查询才一步步开始执行。

二.延迟查询的优点

                    1.节约资源

知道我们需要迭代访问查询结果的时候,某个查询的所要操作的数据源才会开始访问。假设我们查询的结果返回几千个元素,若是在处理完第一个元素后就不需要处理后面的元素,那么这些后续的元素就不会被加载到内存中。

2.延迟查询我们可以将查询的定义和使用分开放在不同的地方,我们甚至可以在需要时多次使用某个已经定义好的查询。

最新文章

  1. MyBatis处理一行数据-MyBatis使用sum语句报错-MyBatis字段映射-遁地龙卷风
  2. 设置WPF输入框焦点
  3. github中cesium-terrain-builder和cesium-terrain-server使用
  4. eclipse大括号高亮显示---颜色很淡,改为显眼的颜色
  5. hdu 5442 (ACM-ICPC2015长春网络赛F题)
  6. 51nod 1116 K进制下的大数 (暴力枚举)
  7. moogodb3.x总结
  8. a标签实用方法详解
  9. css的repaint和reflow
  10. 66. Plus One【leetcode】
  11. 读《Linux Shell脚本攻略》(第2版) 总结
  12. java的集合:List、Set和Map
  13. 第一个Jsp页面,基于普元EOS
  14. Django框架详细介绍---认证系统
  15. PLSQL存储过程(基础篇)-转
  16. 强化学习--Actor-Critic---tensorflow实现
  17. hdu 3591 多重加完全DP
  18. Java lambda 表达式
  19. Python简单实现多级菜单
  20. CF 1107 E. Vasya and Binary String

热门文章

  1. 系统讲解CSS,前端开发最神奇的技术,新手的你一定不能错过
  2. Amaze UI 是一个移动优先的跨屏前端框架。 http://amazeui.org/
  3. Java跨域问题的处理详解
  4. mybatis mysql 批量插入
  5. 深入理解final和static关键字
  6. PHP基础入门详解(一)【世界上最好用的编程语言】
  7. .1-Vue源码起步
  8. .7-Vue源码之AST(3)
  9. 如何线上部署node.js项目
  10. 用正则表达式(regex)匹配多项式(polynomial)