自学内容网 自学内容网

Linq(C#)中的【将数据分区】 :Skip、SkipWhile、Take、TakeWhile、Chunk

LINQ 中的分区是指将输入序列划分为两个部分的操作,无需重新排列元素,然后返回其中一个部分。下图显示对字符序列进行三种不同的分区操作的结果。 第一个操作返回序列中的前三个元素。 第二个操作跳过前三个元素,返回剩余元素。 第三个操作跳过序列中的前两个元素,返回接下来的三个元素。

1、Skip:跳过序列中指定位置之前的元素

使用 Skip 方法跳过序列中的第一个元素,使用其余元素:

foreach (int number in Enumerable.Range(0, 8).Skip(3))
{
    Console.WriteLine(number);
}
// This code produces the following output:
// 3
// 4
// 5
// 6
// 7

2、SkipWhile:基于谓词函数跳过元素,直到元素不符合条件

TakeWhile 和 SkipWhile 方法也可获取和跳过序列中的元素。 但是,这些方法并不获取固定数量的元素,而是根据条件跳过或获取元素。 

只要条件为 true,SkipWhile 会跳过第一个元素。 返回不符合条件的第一个元素以及所有后续元素。

foreach (int number in Enumerable.Range(0, 8).SkipWhile(n => n < 5))
{
    Console.WriteLine(number);
}
// This code produces the following output:
// 5
// 6
// 7

3、Take:获取序列中指定位置之前的元素

使用 Take 方法只获取序列中的第一个元素:

foreach (int number in Enumerable.Range(0, 8).Take(3))
{
    Console.WriteLine(number);
}
// This code produces the following output:
// 0
// 1
// 2

4、TakeWhile:基于谓词函数获取元素,直到元素不符合条件

TakeWhile 会获取序列中的元素,除非元素不符合条件。

foreach (int number in Enumerable.Range(0, 8).TakeWhile(n => n < 5))
{
    Console.WriteLine(number);
}
// This code produces the following output:
// 0
// 1
// 2
// 3
// 4

5、Chunk:将序列的元素拆分为指定最大大小的区块

Chunk 运算符用于根据给定的 size 拆分序列的元素。

int chunkNumber = 1;
foreach (int[] chunk in Enumerable.Range(0, 8).Chunk(3))
{
    Console.WriteLine($"Chunk {chunkNumber++}:");
    foreach (int item in chunk)
    {
        Console.WriteLine($"    {item}");
    }

    Console.WriteLine();
}
// This code produces the following output:
// Chunk 1:
//    0
//    1
//    2
//
//Chunk 2:
//    3
//    4
//    5
//
//Chunk 3:
//    6
//    7

上述 C# 代码:


原文地址:https://blog.csdn.net/llyfe2006/article/details/144005433

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!