2011-02-16 3 views
2

LINQ FirstOrDefault에 '시퀀스에 요소가 없습니다'가 표시됩니다. 시퀀스에 LINQ FirstOrDefault가없는 요소가 포함되어 있습니다.

int? locationId = _ctx.m_locations.FirstOrDefault(
         l => l.name.ToLower() == countyOrTown.ToLower() 
       ).location_key; 

나는 FirstOrDefault의 요점이 데이터베이스에 항목이없는 경우는 예외를 발생하지 않는다는 것입니다 생각 그냥 null을 반환?

+4

그럼에도 불구하고'null'이 반환되면 어떻게'location_key'에 성공적으로 액세스 할 수 있습니까? –

+1

스택 추적이란 무엇입니까? – SLaks

+0

예, 요소가 없으면 NULL을 반환합니다. 그리고 NULL 값에'.location_key'를 할 수 없습니다! –

답변

6

.location_key (널), 당신이 필요로하는 그 NULL 및 단지 그것을 NOT NULL의 경우 첫 번째 확인에 다음이 .location_key 재산의 액세스 :

int? locationId = null; 

var firstOrDefault = _ctx.m_locations.FirstOrDefault(l => l.name.ToLower() == countyOrTown.ToLower()); 

if(firstOrDefault != null) 
    locationId = firstOrDefault.location_key; 
+1

여기에는 '시퀀스에 요소가 없습니다'라는 오류가 있으며 'NullReferenceException'이 아닌 이유는 설명되어 있지 않습니다. –

1

잠재적으로 NULL이 될 수있는 객체에서 "location_key"속성을 호출하려고한다는 것을 알고 있습니까?

0

"예외가 아니라 시퀀스에 [...]"이 포함되어 있습니까? 쿼리가 참 (여기 또는 null) "기본"을 반환하는 경우

코드가 발생합니다 :

당신이 자신을 말하는대로, .FirstOrDefault()NULL 값을 반환하기 때문에

0

테스트 m_locations 및 coun에 처음으로 null 참조를위한 tyOrTown! 개체를 인스턴스화하지 못할 수도 있습니다.

또한 countyOrTown에 빈 문자열이없고 데이터에 오타가 없어 일치하지 않는지 확인해야합니다 (이미 수행했을 것입니다).

관련 문제