나는 (내 이해에 따라) 예외를 throw해야하는 linq 쿼리를 실행하고 있지만 그렇지 않습니다. 쿼리 매개 변수에 맞는 데이터베이스 항목이 없습니다.. 빈 컬렉션에 대한 예외를 처음 throw하지 않습니다.
하는 예외를 throw하지 않습니다 다음, 단순히 null을 반환 :
from i in Items
where i.ItemID == 25
select i.Values.First(v => v.AttribID == 69)
예상대로 예외가 던져 않습니다 다음 쿼리의 여러 가지 형태의 테스트를 통해
(from i in Values
where i.ItemID == 25
where i.AttribID == 69
select i).First()
을의 내가 발견 할 수있는 유일한 차이점은. 첫 번째는 람다식이 아무것도 반환하지 않을 때 예외를 던지지 않는 것 같지만 .First가 매개 변수없이 호출 될 때 예외가 발생합니다. 이유를 이해하도록 도와주세요.
명확히하기 위해 ...
from i in Items
where i.ItemID == 25
select i
... 1 개 항목을 반환합니다.
참조 linqPad는 이러한 쿼리를 테스트 할 때 아래 결과 :
첫 번째 쿼리는 확실히 null을 반환하지 않습니다. 빈 콜렉션을 리턴 할 수도 있지만, 그것은 같은 것이 아닙니다. –
null과 동일한 1 개의 항목을 반환합니다. – MatthewHagemann
오케이. 이런 종류의 일에 대해 아주 분명히해야합니다. 다음으로, LINQ to Objects, LINQ to SQL, EF, 다른 것입니까? 문제를 보여주는 짧지 만 완전한 프로그램이 정말 유용 할 것입니다. –