将数据分区 (C#)

LINQ 中的分区是指将输入序列划分为两个部分的操作,无需重新排列元素,然后返回其中一个部分。

下图显示对字符序列进行三种不同的分区操作的结果。 第一个操作返回序列中的前三个元素。 第二个操作跳过前三个元素,返回剩余元素。 第三个操作跳过序列中的前两个元素,返回接下来的三个元素。

显示三个 LINQ 分区操作的图示。

下面一节列出了对序列进行分区的标准查询运算符方法。

运算符

方法名称 说明 C# 查询表达式语法 详细信息
Skip 跳过序列中指定位置之前的元素。 不适用。 Enumerable.Skip
Queryable.Skip
SkipWhile 基于谓词函数跳过元素,直到元素不符合条件。 不适用。 Enumerable.SkipWhile
Queryable.SkipWhile
Take 获取序列中指定位置之前的元素。 不适用。 Enumerable.Take
Queryable.Take
TakeWhile 基于谓词函数获取元素,直到元素不符合条件。 不适用。 Enumerable.TakeWhile
Queryable.TakeWhile
Chunk 将序列的元素拆分为指定最大大小的区块。 不适用。 Enumerable.Chunk
Queryable.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# 代码:

请参阅