본문 바로가기
Programming/C#

[C#] Linq SingleOrDefault() vs FirstOrDefault()

by 째스터 2024. 2. 17.
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

댓글