English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

LINQ partition 연산자 Take & TakeWhile

partition 연산자는 시퀀스(집합)를 두 부분으로 나누고 그 중 하나를 반환합니다.

Take

Take() 확장 메서드는 첫 번째 요소부터 지정된 수의 요소를 반환합니다.

IList<string> strList = new List<string>(){ "One", "Two", "Three", "Four", "Five" };
var newList = strList.Take(2);
foreach(var str in newList)
    Console.WriteLine(str);
출력:
One
Two

C# 쿼리 문법은 Take & takedwhile 연산자를 지원하지 않습니다. 그러나 쿼리 변수에 Take를 사용할 수 있습니다./takedwhile 메서드 또는 전체 쿼리를 괄호로 감싸고 Take를 호출/takedwhile ()

Dim takeResult = From s In studentList
                 Take 3
                 Select s

TakeWhile

TakeWhile() 확장 메서드는 지정된 조건이 참이 되까지 주어진 집합의 요소를 반환합니다. 첫 번째 요소 자체가 조건을 만족하지 않으면 빈 집합을 반환합니다.

TakeWhile 메서드는 두 가지 오버로드 메서드가 있습니다. 하나는 Func<TSource, bool> 형식의 판정 함수를 받는 메서드이며, 다른 하나는 Func<TSource, int, bool> 형식의 요소 인덱스를 받는 판정 함수를 받는 오버로드 메서드입니다.

아래의 예제에서 TakeWhile() 메서드는 길이가4글자까지의 문자열을 반환

예제:C#에서 TakeWhile 메서드는 문자열 길이가4요소

IList<string> strList = new List<string>() { 
                                            "Three", 
                                            "Four", 
                                            "Five", 
                                            "Hundred" };
var result = strList.TakeWhile(s => s.Length > 4);
foreach(string str in result)
        Console.WriteLine(str);
출력:
Three

위의 예제에서 TakeWhile()는 두 번째 문자열 요소가 해당 조건을 만족하지 않기 때문에 단 하나의 요소만 포함된 결과를 반환합니다.

TakeWhile은 또한 형식 함수에 현재 요소의 인덱스를 전달합니다. 아래의 TakeWhile 메서드 예제는 문자열 요소의 길이가 그 인덱스보다 큰 경우까지 수신

예제:C#에서 TakeWhile이 인덱스를 전달하여 문자열 길이가 인덱스보다 큰 요소를 반환
IList<string> strList = new List<string>() { 
                                            "One", 
                                            "Two", 
                                            "Three", 
                                            "Four", 
                                            "Five", 
                                            "Six" };
var resultList = strList.TakeWhile((s, i) => s.Length > i);
foreach(string str in resultList)
        Console.WriteLine(str);
출력:
One
Two
Three
Four