728x90
Linq를 사용하다 보면 자주 쓰는 SingleOrDefault와 FirstOrDefault. 둘의 차이점이 뭘까?
테스트를 위한 코드를 준비한다.
string?[] empty = [];
string?[] oneElement = ["a"];
string?[] twoElements = ["a", "b"];
var firstEmpty = empty.FirstOrDefault();
var singleEmpty = empty.SingleOrDefault();
var firstOneElement = oneElement.FirstOrDefault();
var singleOneElement = oneElement.SingleOrDefault();
var firstTwoElement = twoElements.FirstOrDefault();
var singleTwoElement = twoElements.SingleOrDefault();
결과를 확인해 본다.
- 빈 배열인 경우: 둘 다 string type의 default인 null이 리턴된다.
- 배열의 원소가 1개인 경우: 모두 "a"가 리턴된다.
- 배열의 원소가 2개인 경우
- SingleOrDefault는 exception이 발생한다.
- FirstOrDefault는 "a"가 리턴된다.
나는 예상치 못한 Exception이 발생할 가능성이 있으므로 FirstOrDefault를 자주 사용한다.
반면에 데이터 원소가 하나가 아닌 경우 심각한 문제가 야기될 수 있는 경우에는 SingleOrDefault를 활용할 수 있을 것 같다.
728x90
'Programming > C#' 카테고리의 다른 글
C# Coding Style (0) | 2024.07.05 |
---|---|
[C#] 반복문에서 삼항연산자 vs Func 뭐가 좋을까? (0) | 2024.03.08 |
[C#] BsonDocument를 JSON으로 변환하기 (0) | 2024.02.09 |
[C#] Closure 문제 (0) | 2022.10.21 |
[C#] Any() vs Count() 성능 비교 (0) | 2022.10.12 |
댓글