Take 메서드
C#의 Linq는 데이터 집합에서 특정 개수만큼 데이터를 가져오는 Take() 메서드를 제공합니다. 데이터 집합의 처음 위치에서 n개의 데이터를 가져오며, 특정 개수는 Take() 메서드의 매개변수로 전달합니다.
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
Take() 메서드는 int 타입의 매개변수를 가지며, 특정 개수만큼 데이터를 반환합니다.
만약, Take() 메서드를 호출하는 데이터 집합이 null인 경우 ArgumentNullException이 발생합니다.
예제 1. int 타입의 List
다음 예제는 5개의 요소가 존재하는 int 타입의 List에서 Take() 메서드를 호출합니다. Take() 메서드에 3을 전달하여 처음 위치에서 3개의 데이터를 가져옵니다.
class Program
{
static void Main(string[] args)
{
List<int> intList = new List<int>()
{
50, 10, 40, 20, 30
};
List<int> TakeResult = intList.Take(3).ToList();
foreach(int num in TakeResult)
{
Console.WriteLine(num);
}
}
}
[실행 결과]
50
10
40
예제 2. 질의 구문에서 Take 메서드 호출
질의 구문에는 Take() 메서드를 지원하지 않습니다. 따라서, 메서드 구문과 혼합하여 사용합니다.
class Program
{
static void Main(string[] args)
{
List<int> intList = new List<int>()
{
50, 10, 40, 20, 30
};
List<int> TakeResult = (from num in intList
select num).Take(3).ToList();
foreach(int num in TakeResult)
{
Console.WriteLine(num);
}
}
}
[실행 결과]
50
10
40
예제 3. 필터링 후 Take 메서드 호출
다음 예제는 int 타입의 List에서 Where 절을 사용하여 30보다 큰 요소를 추출 후 Take() 메서드를 호출하여 3개의 요소를 가져옵니다.
class Program
{
static void Main(string[] args)
{
List<int> intList = new List<int>()
{
10, 20, 30, 40, 50, 60, 70, 80
};
List<int> TakeResult = intList.Where(num => num > 30).Take(3).ToList();
foreach(int num in TakeResult)
{
Console.WriteLine(num);
}
}
}
[실행 결과]
40
50
60
예제 4. 데이터 집합을 null로 할당
데이터 집합을 null로 할당하고 Take() 메서드를 호출하면 다음과 같이 ArgumentNullException이 발생합니다.
class Program
{
static void Main(string[] args)
{
List<int> intList = null;
List<int> TakeResult = intList.Take(3).ToList();
foreach(int num in TakeResult)
{
Console.WriteLine(num);
}
}
}
[에러 내용]
반응형
'C# > LINQ' 카테고리의 다른 글
[C#]LINQ 특정 개수만큼 생략 - Skip 메서드 (0) | 2022.08.11 |
---|---|
[C#]LINQ 특정 조건을 만족하는 데이터 가져오기 - TakeWhile 메서드 (0) | 2022.08.11 |
[C#]LINQ 두 데이터가 동일한지 체크 - SequenceEqual 메서드 (0) | 2022.08.09 |
[C#]LINQ 데이터가 비어있는 경우 - DefaultIfEmpty 메서드 (0) | 2022.08.08 |
[C#]LINQ 단일 값 가져오기 - Single, SingleOrDefault 메서드 (0) | 2022.08.07 |
댓글