0
LINQ to Entities가 SingleOrDefault()
을 지원하지 않지만 대신 FirstOrDefault()
을 사용 하시겠습니까?LINQ to Entities가 SingleOrDefault()를 지원하지 않는 이유는 무엇입니까?
SingleOrDefault()
기능을 대체 하시겠습니까? 무엇에 의해?
LINQ to Entities가 SingleOrDefault()
을 지원하지 않지만 대신 FirstOrDefault()
을 사용 하시겠습니까?LINQ to Entities가 SingleOrDefault()를 지원하지 않는 이유는 무엇입니까?
SingleOrDefault()
기능을 대체 하시겠습니까? 무엇에 의해?
내가 왜 빠져 나갔는지 확실하지 않지만 언제나 자신의 것을 굴릴 수 있습니다.
MSDN에서이 질문에 대한 비슷한 응답을 발견했습니다. 여기에 그 코드를 기반으로 한 구현이 나와 있습니다.
public static TElement SingleOrDefault<TElement>
(this IQueryable<TElement> query)
{
if (query.Count() == 1)
return query.First();
else if (query.Count() == 0)
return null;
else
throw new InvalidOperationException();
}
// Use it like this
Product prod = (from p in db.Product
where p.ProductID == 711
select p).SingleOrDefault();
난 당신이 링크에서 제공하는 코드를 보지 못했다. 표시된 구현은 적어도 내 기억에서 FirstOrDefault()와 똑같은 것처럼 보입니다. SingleOrDefault()는 결과가 없으면 null을 반환하고, 결과가 하나만있는 경우 단일 결과를 반환하거나 둘 이상의 결과가있는 경우 예외를 throw합니다. –
실제로 하나 이상의 결과가 발견되면 SingleOrDefault가 발생합니다. 이것이 핵심입니다. 0 또는 하나의 레코드가 반환되어야합니다. 그렇지 않으면 오류가 발생했습니다. 문서에서 : "이 메서드는 시퀀스에 둘 이상의 요소가있는 경우 예외를 throw합니다." 귀하의 버전이 올바르지 않습니다. – Will
내 구현이 업데이트되었습니다. 의견을 보내 주셔서 감사합니다. – KClough