C# LINQ의 LastOrDefault() 메서드는 시퀀스의 마지막 요소를 반환하며, 요소가 존재하지 않을 경우 해당 데이터 형식의 기본값(default)을 반환합니다.
일반적인 Last() 메서드를 빈 컬렉션에 호출하면 InvalidOperationException> 예외가 발생하지만, LastOrDefault()를 사용하면 예외 없이 안전하게 기본값을 받을 수 있다는 점이 가장 큰 차이입니다.
빈 리스트에서의 동작
먼저 비어 있는 리스트를 하나 만들어 보겠습니다.
List<double> val = new List<double> { };이 리스트에는 요소가 하나도 없으므로 마지막 요소를 가져올 수 없습니다. 하지만 LastOrDefault()를 호출하면 오류가 발생하지 않고 double 형식의 기본값인 0이 반환됩니다.
val.AsQueryable().LastOrDefault();
예제 코드
다음은 전체 실행 코드입니다.
using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
static void Main() {
List<double> val = new List<double> { };
double d = val.AsQueryable().LastOrDefault();
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
참고 사항
반환되는 기본값은 데이터 형식에 따라 다릅니다. 숫자 형식(int, double 등)은 0, 참조 형식(string, 클래스 등)은 null, bool 형식은 false가 기본값으로 반환됩니다. 따라서 위 예제처럼 반환값이 기본값인지 확인하여 원하는 값으로 대체하는 패턴을 자주 활용할 수 있습니다.