C#에서는 Min() 메서드를 사용하여 시퀀스(컬렉션)에 포함된 값들 중 가장 작은 값을 손쉽게 구할 수 있습니다. 특히 AsQueryable()을 통해 컬렉션을 IQueryable 형태로 변환한 뒤 Min() 메서드를 호출하면, LINQ 제공자를 통한 지연 실행 방식으로 최솟값을 조회할 수 있습니다.
예제 데이터 준비
먼저 다음과 같이 long 타입 요소들을 가진 리스트가 있다고 가정해 보겠습니다.
List<long> list = new List<long> { 1, 2, 3, 4, 5, 6 };Queryable Min() 메서드 사용법
이 리스트에서 최솟값을 구하려면 AsQueryable()과 함께 Min() 메서드를 아래와 같이 호출합니다.
list.AsQueryable().Min();
Min() 메서드는 시퀀스 내 모든 요소를 비교하여 그중 가장 작은 값을 반환합니다. 숫자 타입뿐만 아니라 날짜 등 비교 가능한 다양한 타입에도 활용할 수 있습니다.
전체 예제 코드
다음은 위 개념을 실제로 적용한 완전한 예제입니다. 리스트의 모든 요소를 출력한 뒤, Min() 메서드로 최솟값을 구하여 화면에 표시합니다.
using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
static void Main() {
List<long> list = new List<long> { 1, 2, 3, 4, 5, 6 };
// 리스트의 모든 요소 출력
foreach(long ele in list) {
Console.WriteLine(ele);
}
// 최솟값 구하기
long min_num = list.AsQueryable().Min();
Console.WriteLine("Smallest number = {0}", min_num);
}
}실행 결과
1 2 3 4 5 6 Smallest number = 1
정리
이처럼 AsQueryable().Min() 조합을 사용하면 컬렉션에서 최솟값을 간단하게 얻을 수 있습니다. 참고로 빈 시퀀스에 대해 Min()을 호출하면 InvalidOperationException이 발생할 수 있으므로, 필요하다면 DefaultIfEmpty()를 함께 사용하거나 사전에 요소 존재 여부를 확인하는 것이 안전합니다.