分区是指将一个单一的输入序列划分成两个或多个部分或序列,同时不会对输入元素重排序,返回一个新形成的部分。LINQ分割操作符包括Skip、SkipWhile、Take和TakeWhile。

1. Skip

  Skip操作符会跳过一些元素到达序列中的一个指定的位置,将会略过特定数目的若干元素并且返回其余的元素。

1>. 原型定义

  1. public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);

2>. 示例

  1. int[] fibonacci = new int[] { , , , , , , , };
  2. var expr = (from f in fibonacci
  3. select f).Skip();
  1. int[] fibonacci = new int[] { , , , , , , , };
  2. var expr = from f in fibonacci
  3. select f;
  4. expr.Skip()
  1. var expr = context.Products
  2. .Skip();

2. SkipWhile

  SkipWhile操作符基于特定的逻辑跳过或略过的元素,只要特定的条件为真就继续略过元素,然后返回余下的元素。

  SkipWhile中的条件只对序列或集合的第一个元素开始验证判断,当序列或集合中有一个元素满足验证条件,则后续的元素则不再进行条件验证。

1>. 原型定义

  1. public static IEnumerable<TSource> SkipWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
  1. public static IEnumerable<TSource> SkipWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);

2>. 示例

  1. int[] fibonacci = new int[] { , , , , , , , };
  2. var expr = from f in fibonacci
  3. select f;
  4. expr.SkipWhile(item => item > );
  1. var expr = context.Products
  2. .SkipWhile(p => p.UnitPrice > 10m);
  1. int[] numbers = new int[] { , , , , , , , , , , , };
  2. var expr = numbers.SkipWhile(n => n <= );
  3.  
  4. expr.ToList().ForEach(item =>
  5. {
  6. Console.Write(item + " ");
  7. });

  执行输出:

3. Take

  Take操作符返回某个序列中连续的元素子序列,子序列开始与序列的开头,结束于指定的位置。

1>. 原型定义

  1. public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);

2>. 示例

  1. int[] fibonacci = new int[] { , , , , , , , };
  2. var expr = from f in fibonacci
  3. select f;
  4. expr.Take()
  1. var expr = context.Products
  2. .Take();

4. TakeWhile

  TakeWhile操作符基于特定的逻辑返回元素,并且只要指定的条件为真就继续选取元素,其余元素会被跳过。

  TakeWhile中的条件只对序列或集合的第一个元素开始验证判断,当序列或集合中有一个元素满足验证条件,则后续的元素则不再进行条件验证。

1>. 原型定义

  1. public static IEnumerable<TSource> TakeWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
  1. public static IEnumerable<TSource> TakeWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);

2>. 示例

  1. int[] fibonacci = new int[] { , , , , , , , };
  2. var expr = from f in fibonacci
  3. select f;
  4. expr.TakeWhile(item => item > );
  1. var expr = context.Products
  2. .TakeWhile(p => p.UnitPrice > 10m);
  1. int[] numbers = new int[] { , , , , , , , , , , , };
  2. var expr = numbers.TakeWhile(n => n <= );
  3.  
  4. expr.ToList().ForEach(item =>
  5. {
  6. Console.Write(item + " ");
  7. });

  运行输出:

LINQ系列:Linq to Object分区操作符的更多相关文章

  1. LINQ系列目录

    1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...

  2. C# ~ 从 XML 到 Linq 到 Linq to XML

    .XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...

  3. LINQ系列:Linq to Object集合操作符

    集合操作符对元素的集合或序列集合进行操作,并返回一个集合.LINQ共有4种集合查询操作符:Distinct.Union.Intersect和Except. 1. Distinct Distinct操作 ...

  4. LinQ系列文章

    温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...

  5. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  6. LINQ 系列

    C#图解教程 第十九章 LINQ   LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...

  7. Linq系列

    LINQ 图解 Linq中的Select——投影 Linq学习资源 Expert C# 5.0中的Linq部分

  8. LINQ之LINQ to Objects(上)

    LINQ概述 LINQ,语言集成查询(Language Integrated Query),它允许使用C#或VB代码以查询数据库相同的方式来操作不同的数据源. 1.LINQ体系结构 从上图可以看出,L ...

  9. Linq之Linq to Sql

    目录 写在前面 系列文章 Linq to sql 总结 写在前面 上篇文章介绍了linq to xml的相关内容,linq to xml提供一种更便捷的创建xml树,及查询的途径.这篇文章将继续介绍l ...

随机推荐

  1. POJ2104 K-th Number(主席树)

    题目 Source http://poj.org/problem?id=2104 Description You are working for Macrohard company in data s ...

  2. Android 中 LayoutInflater 的使用

    一.LayoutInflater 的作用 我们一般使用 LayoutInflater 做一件事:View inflate(int resource, ViewGroup root); inflate( ...

  3. BZOJ1129 : [POI2008]Per

    枚举LCP,假设前$i-1$个都相同.那么后面$n-i$个数可以随意排列,第$i$个位置可以填的方案数为后面小于$a_i$的数字个数,树状数组维护. 同时为了保证本质不同,方案数需要除以每个数字的个数 ...

  4. 浅谈我对 jQuery 的了解

    总述 0 获取 jQuery 对象 1 对象跳转 2 方法调用 3 常用API 4 $(…); 5 jQuery 对象获取 6 Data 相关方法 7 选择器 8 基本的过滤器 9 内容过滤选择器 1 ...

  5. AR初体验:宣传G20

    最近Pokemon Go太火,它基于LBS(Location Based Service)+AR(Augmented Reality)的一款游戏,这股风,一定会让国内的公司纷纷效仿,你懂的.不可否定的 ...

  6. Docker中images无法使用apt-get update解决方案

    问题描述:使用apt-get update一直fail 原因:DNS设置错误 解决办法: nm-tool #查看DNS后面的数(IPv4),将后面的数copy下来 sudo nano /etc/def ...

  7. 从问题看本质:socket到底是什么?

    一.问题的引入——socket的引入是为了解决不同计算机间进程间通信的问题 1.socket与进程的关系 1).socket与进程间的关系:socket   用来让一个进程和其他的进程互通信息(IPC ...

  8. WIN32 窗口封装类实现

    CQWnd.h窗口类定义 // QWnd.h: interface for the CQWnd class. // ////////////////////////////////////////// ...

  9. shell命令获取最新文件的名称

    最近有一个需求,在部署游戏战场服时,从程序包到部署需要做一些本地化的操作,手工操作费时费力,故写一个shell脚本,一键部署. 遇到的问题是每次要部署最新的程序包,因此需要shell命令获取最新的文件 ...

  10. xxxxxxxx

    class IndexHandler(BaseRequestHandler): def get(self, page=1): print('iiiiiiiiiiiiiiiii') current_ti ...