Single( )과 SingleOrDefault( ) 확장 메서드
컬렉션에서 조건에 맞는 값을 단 하나만 가져오는 확장 메서드에는 Single()과 SingleOrDefault()가 있습니다.
• Single( ): null 값이면 예외가 발생합니다. 즉, 에러가 발생합니다.
• SingleOrDefault( ): 값이 없으면 null 값을 반환합니다.
다음 내용을 C# 인터렉티브에 입력한 후 실행해 보세요.
> List<string> colors = new List<string> { "Red", "Green", "Blue" }; > string red = colors.Single(c => c == "Red"); > red "Red" > //없는 데이터를 요청하면 예외 발생 > string black = colors.Single(color => color == "Black"); 시퀀스에 일치하는 요소가 없습니다. + System.Linq.Enumerable.Single<TSource>(IEnumerable<TSource>, Func<TSource, bool>) > //없는 데이터를 요청하면 null 값 반환 > string black = colors.SingleOrDefault(color => color == "Black"); > black null
Single() 메서드는 컬렉션에 값이 없으면 실행 결과처럼 에러를 발생합니다. SingleOrDefault() 메서드는 에러를 발생시키지 않고 null 값을 그대로 반환합니다.