방프리

21.09.18 Chapter4. LINQ 활용 (Item 43) 본문

C#/Effective C#

21.09.18 Chapter4. LINQ 활용 (Item 43)

방프리 2021. 9. 18. 18:45

Item 43 : 쿼리 결과의 의미를 명확히 강제하고, Single()과 First()를 사용하라

 

쿼리를 통해서 데이터를 가져오는 방법은 여러가지가 있다. 

ToList(), ToArray() 등을 통해 시퀸스 형식을 가져오는 방법과 Single(), First() 등을 통해 단일 요소를 가져오는 

방법으로 나뉜다.

이 중 단일 요소를 가져올 때 Single()과 First()의 차이를 유의해야한다.

간단하게 쿼리문을 통해 얻고자 하는 데이터가 무조건 하나일 경우 Single(), 

여러 개가 있을 경우에는 First()를 사용하면 된다. 

//Index가 기본키라고 할 때 기본키는 해당 테이블에서 하나만 존재할 수 있으므로
var singleElement = dbContext.MyTable.Where(p => p.Index == Index).SingleOrDefault();

//기본키가 아닌 컬럼은 같은 데이터가 여러 개 존재할 수 있으므로 찾은 것 중 맨 처음 것
var firstElement = dbContext.MyTable.Where(p => p.Value == Value).FirstOrDefault();

하지만 우리는 데이터가 없을 경우를 반드시 생각해주어야 한다. 다행히 SingleOrDefault(), FirstOrDefault() 등

찾고자 하는 요소가 없다면 그 타입의 초기값을 반환하는 함수를 사용하면 된다.

Comments