데이터 분할(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 연산자를 적용하여 시퀀스를 최대 크기가 3인 청크로 분할합니다.

참조