본문 바로가기
C#

[C#] 링크(LINQ) Take(), Skip()

by 코모's 2023. 7. 17.
반응형

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 }

 

 

 

반응형