IEnumerable 확장 방법을 고려 SingleOrDefault()
하고FirstOrDefault()
다음과 같은 MSDN 문서SingleOrDefault
:
시퀀스의 유일한 요소 또는 시퀀스가 비어있는 경우 기본값을 반환합니다. 이 메소드는 시퀀스에 둘 이상의 요소가있는 경우 예외를 발생시킵니다.
반면 FirstOrDefault
MSDN에서 (아마도 OrderBy()
or를 사용 OrderByDescending()
하거나 전혀 사용 하지 않을 때 ),
시퀀스의 첫 번째 요소를 반환
몇 가지 예제 쿼리를 고려하십시오.이 두 가지 방법을 언제 사용해야하는지 항상 명확하지는 않습니다.
var someCust = db.Customers
.SingleOrDefault(c=>c.ID == 5); //unlikely(?) to be more than one, but technically COULD BE
var bobbyCust = db.Customers
.FirstOrDefault(c=>c.FirstName == "Bobby"); //clearly could be one or many, so use First?
var latestCust = db.Customers
.OrderByDescending(x=> x.CreatedOn)
.FirstOrDefault();//Single or First, or does it matter?
질문
LINQ 쿼리 사용 SingleOrDefault()
및 결정시 어떤 규칙을 따르거나 제안FirstOrDefault()
합니까?