더북(TheBook)

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 값을 그대로 반환합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.