C#의 Queryable.TakeLast() 메서드는 시퀀스의 끝에서부터 지정된 개수만큼의 요소를 추출할 때 사용되는 LINQ 연산자입니다. 특히 정렬된 컬렉션에서 최댓값처럼 뒤쪽에 위치한 요소들을 간편하게 가져올 수 있어 유용합니다.
TakeLast() 기본 사용법
먼저 예제에 사용할 정수형 배열입니다.
int[] pages = { 492, 290, 129, 602, 152 };
요소를 오름차순으로 정렬하기 위해 OrderBy() 메서드를 사용하고, 이어서 TakeLast() 메서드를 호출하면 정렬된 시퀀스의 마지막에서 원하는 개수의 요소를 얻을 수 있습니다.
pages.AsQueryable().OrderBy(s => s).TakeLast(2);
그럼 전체 예제 코드를 살펴보겠습니다.
예제
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
// 책의 페이지 수
int[] pages = { 492, 290, 129, 602, 152 };
// 오름차순 정렬 후 마지막 두 개 요소 가져오기
IEnumerable<int> last = pages.AsQueryable().OrderBy(s => s).TakeLast(2);
foreach (int res in last) {
Console.WriteLine(res);
}
}
}
실행 결과
492 602
결과 해석
배열을 오름차순으로 정렬하면 {129, 152, 290, 492, 602}가 됩니다. 여기서 TakeLast(2)를 호출하면 시퀀스의 마지막 두 요소인 492와 602, 즉 배열에서 가장 큰 값 두 개가 반환됩니다.
이처럼 TakeLast()는 정렬 방향과 조합하기에 따라 최댓값, 최솟값 또는 시퀀스 말미의 데이터를 유연하게 추출할 수 있는 강력한 메서드입니다. 반대로 앞쪽에서 요소를 가져오려면 Take() 메서드를 사용하면 됩니다.