반응형
LINQ에서 제공하는 확장 메서드 중 Take, Skip, TakeWhile, SkipWhile을 분할 연산자라고 한다.
분할 연산자는 출력 시퀀스를 분할하여 반환한다.
Take()
Take 메서드로 numbers 배열에서 처음 3개의 원소만 꺼내 출력 시퀀스를 만든다.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var first3Numbers = numbers.Take(3);
// first3Numbers = { 5, 4, 1 };
Skip()
Skip 메서드로 numbers 배열에서 처음 4개의 원소를 건너뛰고 출력 시퀀스를 만든다.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var allButFirst4Numbers = numbers.Skip(4);
// allButFirst4Numbers = { 9, 8, 6, 7, 2, 0 }
TakeWhile()
TakeWhile과 SkipWhile은 Take와 Skip과 달리, 주어진 조건에 도달하기 전까지만 출력 시퀀스에 포함한다.
TakeWhile 메서드로 numbers 배열 원소 중 6보다 작은 원소가 나오기 전만 출력 시퀀스에 포함한다.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);
// firstNumbersLessThan6 = { 5, 4, 1, 3 }
numbers 배열 중 원소의 index 값보다 큰 원소가 나오기 전까지만 출력 시퀀스에 포함한다.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);
// firstSmallNumbers = { 5, 4 }
SkipWhile()
numbers 배열 첫 원소부터 시작해서 3으로 나누어 떨어지지 않는 원소를 건너뛰고, 3으로 나누어 떨어지는 원소부터 출력 시퀀스를 만든다.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var allButFirst3Numbers = numbers.SkipWhile(n => n % 3 != 0);
// allButfirst3Numbers = { 3, 9, 8, 6, 7, 2, 0 };
numbers 배열 첫 원소부터 시작해서 index 값보다 같거나 큰원소는 건너뛰고, index 값보다 작은 원소부터 출력 시퀀스를 만든다.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var laterNumbers = numbers.SkipWhile((n, index) => n >= index);
// laterNumbers = { 1, 3, 9, 8, 6, 7, 2, 0 }
반응형
'C#' 카테고리의 다른 글
[C#] 링크(LINQ) - SequenceEqual, Concat, Zip (0) | 2023.07.20 |
---|---|
[C#] 링크(LINQ) - 집합 연산자 Distinct, Union, Intersect, Except (0) | 2023.07.20 |
[C#] 링크(LINQ) 메서드식 표현 (0) | 2023.07.17 |
[C#] Closure(클로저) 이해하기 (0) | 2023.05.02 |
[C#] Action, Predicate, Function (0) | 2022.11.15 |