C# Single() 메서드란?
C# LINQ의 Single() 메서드는 주어진 조건을 만족하는 유일한 요소 하나만을 반환합니다. 만약 조건을 만족하는 요소가 두 개 이상 존재하거나 아예 존재하지 않으면 InvalidOperationException 예외가 발생한다는 점에 유의해야 합니다.
예제 준비
먼저 다음과 같은 문자열 배열이 있다고 가정해 보겠습니다.
string[] str = { "jack", "tom", "henry", "time" };이 배열에 대해 Single() 메서드를 호출하고, 람다 식(Lambda Expression)을 함께 사용하여 길이가 4보다 큰 문자열 요소를 찾아봅니다.
str.AsQueryable().Single(name => name.Length > 4);
배열의 요소 중 길이가 4를 초과하는 문자열은 "henry"뿐이므로, Single() 메서드는 정상적으로 해당 값을 반환합니다.
전체 코드 예제
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
string[] str = { "jack", "tom", "henry", "time" };
// 길이가 4보다 큰 문자열 찾기
string res = str.AsQueryable().Single(name => name.Length > 4);
Console.WriteLine(res);
}
}실행 결과
henry
정리 및 참고 사항
- Single()은 조건을 만족하는 요소가 정확히 하나일 때만 사용해야 합니다.
- 조건을 만족하는 요소가 여러 개일 가능성이 있다면 First() 또는 FirstOrDefault() 메서드를 사용하는 것이 더 안전합니다.
- 조건에 맞는 요소가 없을 수도 있는 경우에는 SingleOrDefault()를 사용하면 예외 대신 기본값(null)을 반환받을 수 있습니다.