C#의 Take() 메서드를 사용하면 시퀀스(컬렉션)의 시작 부분에서 지정한 개수만큼의 요소를 손쉽게 추출할 수 있습니다. 특히 AsQueryable()과 함께 사용하면 LINQ 쿼리 형태로 데이터를 유연하게 처리할 수 있습니다.
Take() 메서드란?
Take(n)은 시퀀스의 첫 번째 요소부터 n개의 요소를 반환하는 LINQ 연산자입니다. 정렬 메서드인 OrderByDescending()과 조합하면 '상위 n개' 데이터를 구하는 데 매우 유용합니다.
예제 소개
다음과 같이 학생 점수가 담긴 배열이 있다고 가정해 보겠습니다.
int[] marks = { 35, 72, 50, 90, 95, 85, 52, 67 };여기서 가장 높은 점수 5개를 구하고 싶다면, 먼저 OrderByDescending()으로 내림차순 정렬한 뒤 Take() 메서드로 앞에서 5개의 요소를 가져오면 됩니다.
marks.AsQueryable().OrderByDescending(s => s).Take(5);
전체 예제 코드
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] marks = { 35, 72, 50, 90, 95, 85, 52, 67 };
// 상위 5명의 학생 점수 조회
IEnumerable<int> selMarks = marks.AsQueryable().OrderByDescending(s => s).Take(5);
foreach (int res in selMarks) {
Console.WriteLine(res);
}
}
}실행 결과
95 90 85 72 67
정리
AsQueryable()로 배열을 IQueryable 형태로 변환한 후, OrderByDescending()으로 내림차순 정렬하고 Take(5)를 호출하면 최고 점수 5개가 순서대로 출력됩니다. 이처럼 Take() 메서드는 게임 랭킹, 판매량 상위 제품 목록 등 '상위 N개' 데이터를 다룰 때 실무에서 자주 활용되는 핵심 LINQ 연산자입니다.