Секционирование данных (C#)
Секционированием в 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#:
- Использует Enumerable.Range(Int32, Int32) для создания последовательности чисел.
- Применяет оператор
Chunk
, разделяя последовательность на блоки, которые содержат максимум три элемента.