Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析

二:linq的分区操作

常用的分区操作:Take,TakeWhile,Skip,SkipWhile

三:Take

1. 注释: 从序列的开头返回指定数量的连续元素

2. 实战:
var nums = new int[] { 10, 20, 30, 40, 50, 60 };

var query = nums.Take(2).ToList(); // 10,20

3. 探究源码:

四:TakeWhile

1. 注释: 只要满足指定的条件,就会返回序列的元素。 【find】

2. var nums = new int[] { 10, 20, 30, 40, 50, 60 };

var query = nums.TakeWhile(i => i < 20);

3. 大家要记住,TakeWhile和Where的区别在于,TakeWhile是从前往后计算,如果遇到不满足Func条件,则提前退出。

4. 源代码研究:

IL_0041: ldfld class [mscorlib]System.Func`2<!0, bool> class System.Linq.Enumerable/'<TakeWhileIterator>d__26`1'<!TSource>::predicate
IL_0046: ldloc.2
IL_0047: callvirt instance !1 class [mscorlib]System.Func`2<!TSource, bool>::Invoke(!0)
IL_004c: brfalse.s IL_0075

这里是在MoveNext中执行的,如果predicate为false,则直接退出。

五:Skip

1. 跳过序列中指定数量的元素,然后返回剩余的元素。

2.实战:

var nums = new int[] { 10, 20, 30, 40, 50, 60 };

var query = nums.Skip(3);

六:SkipWhile

大家一定要知道SkipWhile的灵活性是Skip的延伸。

static void Main(string[] args)
{
var nums = new int[] { 10, 20, 30, 40, 50, 60 };

var query = nums.SkipWhile(i => i < 30);

}

从linq中我们要知道,ILSpy和ILDasm是我们学习C#必备的两个工具。

最新文章

  1. Win10 Migrate apps to the Universal Windows Platform (UWP)
  2. php开发(TP框架使用)
  3. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
  4. 93、App Links (应用程序链接)实例
  5. 四则运算2--设计思路--软件工程-c++
  6. C#使用SMTP发送邮件
  7. Bean不同配置方式比较
  8. Objective-C ,ios,iphone开发基础:使用GDataXML解析XML文档,(libxml/tree.h not found 错误解决方案)
  9. c#拖放
  10. ios开发之xcode6中如何添加pch全局引用文件
  11. Java 学习 第三篇;面向对象
  12. Swift 可展开可收缩的表视图
  13. Ubuntu12.04password正确 入口的桌面(测试的恢复正常)
  14. 【微信公众平台开发】百度周边搜索接口php封装
  15. 双向循环链表(C语言描述)(一)
  16. win8系统下,python 2.7安装xlrd,xlutils和xlwt的方法
  17. idhttp采集时遇到乱码问题解决
  18. GMA Round 1 向量计算
  19. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer
  20. HTTP请求代码整理

热门文章

  1. 使用Dottrace跟踪.net代码执行时间
  2. SpringData JPA 接口和方法
  3. VS2015编译VLC2.2.1(under WIN7-64)&lt;转&gt;
  4. Hibernate多对多关联映射的HQL中的in条件查询问题
  5. IOS 键盘的显示与关闭
  6. NHibernate-NativeSQL
  7. MySQL数据库篇之多表查询
  8. 微信公众号token 验证
  9. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)
  10. 494. Target Sum 添加标点符号求和