개발/C#

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

한번사는인생. 2017. 9. 1. 17:03

1. SingleOrDefault()

조건식에 맞는 단일 레코드를 리턴한다.

데이터가 하나라는 전제로 사용하게 된다.
여러 Row가 존재한다면 에러가 발생하게 된다.
데이터가 존재하지 않으면 null 을 리턴하게 된다.


2. FirstOrDefault()

조건식에 맞는 첫 번째 레코드를 찾는다.

만약 조건식에 맞는 처음 레코드를 찾는 경우 사용하게 된다.

1
2
3
4
5
var group = Groups.FirstOrDefault(g => g.Index == (int)dr["grp_num"]);
if (group != null)
{
    group.News.Add(new ItemProperty((int)dr["news_num"], dr["title"].ToString()));    
}



Groups 라는 리스트 객체에서 첫 번째 레코드를 가져와 Index 값과 grp_num (DB에서 가져온 데이터) 를 비교하는 구문이다.


두 함수 모두, null 체크를 꼭 해야한다.