LINQ Partition 연산자 (Take, Skip)

2022. 2. 3. 00:00CSharp/Advance

반응형

Take 및 Skip

입력 시퀀스를 분할 

 

TakeWhile 및 SkipWhile

입력 시퀀스의 조각을 출력 시퀀스로 얻을 수 있다.

 

요소 가져오기

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var first3Numbers = numbers.Take(3);
Console.WriteLine("First 3 numbers:");
foreach (var n in first3Numbers) Console.WriteLine(n);

// output
First 3 numbers:
5
4
1

요소 건너뛰기

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var allButFirst4Numbers = numbers.Skip(4);

Console.WriteLine("All but first 4 numbers:");
foreach (var n in allButFirst4Numbers)
{
    Console.WriteLine(n);
}

//output
All but first 4 numbers:
9
8
6
7
2
0

조건에 따라 가져오기

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);

Console.WriteLine("First numbers less than 6:");
foreach (var num in firstNumbersLessThan6)
{
    Console.WriteLine(num);
}
//output
First numbers less than 6:
5
4
1
3

조건에 따라 건너뛰기

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

// In the lambda expression, 'n' is the input parameter that identifies each
// element in the collection in succession. It is is inferred to be
// of type int because numbers is an int array.
var allButFirst3Numbers = numbers.SkipWhile(n => n % 3 != 0);

Console.WriteLine("All elements starting from first element divisible by 3:");
foreach (var n in allButFirst3Numbers)
{
    Console.WriteLine(n);
}

//output
All elements starting from first element divisible by 3:
3
9
8
6
7
2
0

조건에 따라 가져오기 (Index 활용)

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);

Console.WriteLine("First numbers not less than their position:");
foreach (var n in firstSmallNumbers)
{
    Console.WriteLine(n);
}

//output
First numbers not less than their position:
5
4

조건에 따라 건너뛰기 (index 활용)

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var laterNumbers = numbers.SkipWhile((n, index) => n >= index);

Console.WriteLine("All elements starting from first element less than its position:");
foreach (var n in laterNumbers)
{
    Console.WriteLine(n);
}

//output
All elements starting from first element less than its position:
1
3
9
8
6
7
2
0

 

관련영상

https://youtu.be/OUmPXDVGeSM

반응형

'CSharp > Advance' 카테고리의 다른 글

LINQ Grouping Operators (GroupBy , into)  (0) 2022.02.07
LINQ 순서정렬 연산자 (OrderBy)  (0) 2022.02.04
LINQ Projection 연산자 (Select)  (0) 2022.02.02
LINQ 제한 연산자 (Where)  (0) 2022.02.01
LINQ 란  (0) 2022.01.31