Секционирование данных (C#)

Секционированием в LINQ называют операцию разделения входной последовательности на два раздела без изменения порядка элементов, а затем возвращения одного из разделов.

На следующем рисунке показаны результаты трех различных операций секционирования в последовательности символов. Первая операция возвращает первые три элемента в последовательности. Вторая операция пропускает первые три элемента и возвращает остальные элементы. Третья операция пропускает первые два элемента в последовательности и возвращает три следующих элемента.

Illustration that shows three LINQ partitioning operations.

Далее перечислены методы стандартных операторов запроса, которые секционируют последовательности.

Операторы

Имена методов Описание Синтаксис выражения запроса 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#:

  • Использует Enumerable.Range(Int32, Int32) для создания последовательности чисел.
  • Применяет оператор Chunk, разделяя последовательность на блоки, которые содержат максимум три элемента.

См. также