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

C# Queryable Min() 메서드 – 시퀀스에서 최솟값 구하기

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()를 함께 사용하거나 사전에 요소 존재 여부를 확인하는 것이 안전합니다.