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

C# LINQ FirstOrDefault() 메서드 완벽 가이드 - 기본값 반환 방법

FirstOrDefault() 메서드는 시퀀스(컬렉션)에서 첫 번째 요소를 반환하며, 요소가 존재하지 않을 경우 해당 타입의 기본값(default value)을 반환하는 LINQ 메서드입니다.

FirstOrDefault() 메서드란?

일반적인 First() 메서드는 빈 컬렉션에서 호출되면 InvalidOperationException 예외를 발생시킵니다. 반면 FirstOrDefault()는 예외를 던지는 대신 기본값을 조용히 반환하기 때문에, 컬렉션이 비어 있을 가능성이 있는 상황에서 안전하게 사용할 수 있습니다.

  • 숫자 타입(int, double 등)의 경우 기본값은 0
  • 참조 타입(string, 클래스 등)의 경우 기본값은 null
  • bool 타입의 경우 기본값은 false

빈 리스트 예제

다음과 같이 비어 있는 List가 있다고 가정해 보겠습니다.

List<double> val = new List<double> { };

이 리스트는 비어 있는 컬렉션이므로 첫 번째 요소를 표시할 수 없습니다. 이럴 때 FirstOrDefault() 메서드를 사용하면 예외 없이 기본값(0)을 얻을 수 있습니다.

val.AsQueryable().FirstOrDefault();

전체 코드 예제

using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
    static void Main() {
        List<double> val = new List<double> { };
        double d = val.AsQueryable().FirstOrDefault();
        Console.WriteLine("Default Value = " + d);
        if (d == 0.0D) {
            d = 0.1D;
        }
        Console.WriteLine("Default Value changed = " + d);
    }
}

실행 결과

Default Value = 0
Default Value changed = 0.1

코드 설명

위 예제의 동작 흐름은 다음과 같습니다.

  1. 비어 있는 List<double>을 생성합니다.
  2. AsQueryable()로 쿼리 가능한 형태로 변환한 뒤 FirstOrDefault()를 호출합니다.
  3. 요소가 없으므로 double 타입의 기본값인 0이 반환됩니다.
  4. 반환된 값이 0.0인지 확인하여, 필요에 따라 새로운 값(0.1)으로 변경할 수 있습니다.

FirstOrDefault()와 First()의 차이점

메서드빈 컬렉션일 때 동작
First()InvalidOperationException 예외 발생
FirstOrDefault()타입별 기본값 반환 (예외 없음)

컬렉션에 항상 데이터가 있다고 보장할 수 없다면, 예외 처리를 별도로 하지 않아도 되는 FirstOrDefault()를 사용하는 것이 더 안전하고 간결한 코드를 작성하는 방법입니다.