2011-08-25 5 views
0

중첩 된 선택을 사용하여 사전을 채우려고하는데 TableC의 개체가 없을 수 있으므로 nullreference 예외가 발생합니다.linq 및 엔티티 프레임 워크를 사용하는 중첩 된 사전 nullvreferenceexception

List<SomeResult> test = (from a in _entities.TableA 
         select new SomeResult 
         { 
          TestB = a.TableB.Name, 
          TestCDict = a.TableC.ToDictionary(x => x.SomeKey, x => x.SomeValue) 
          }).ToList(); 

어떻게 수정하여 TestCDict가 null 일 수 있습니까? 당신이 TestCDict에서 NULL 대신 빈 사전을 원하는 경우

TestCDict = a.TableC == null ? null 
      : a.TableC.ToDictionary(x => x.SomeKey, x => x.SomeValue) 

또는 이와

: : 이것에

/라세

답변

1

변경이

TestCDict = a.TableC == null ? new Dictionary<TypeOfKey, TypeOfValue>() 
      : a.TableC.ToDictionary(x => x.SomeKey, x => x.SomeValue) 
+0

는 더 많은 것 같다 참조 문제. TableC의 값을 "포함"하려면 중첩 쿼리를 사용해야 할 수도 있습니다. 그것은 단지 문자열, int 및 유형 엔티티가 아닌 기본 사항을 비교할 수 있다고합니다. –

관련 문제