Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Queryable Take() 메서드로 상위 N개 요소 가져오기

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 연산자입니다.