使用linq和实体框架的嵌套字典nullreferenceexception

使用linq和实体框架的嵌套字典nullreferenceexception,linq,entity-framework,Linq,Entity Framework,我试图使用嵌套的select填充字典,但得到了nullreference异常,因为TableC中的对象可能不存在 List<SomeResult> test = (from a in _entities.TableA select new SomeResult { TestB = a.TableB.Name,

我试图使用嵌套的select填充字典,但得到了nullreference异常,因为TableC中的对象可能不存在

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();
List test=(来自_entities.table中的
选择新结果
{
TestB=a.TableB.Name,
TestCDict=a.TableC.ToDictionary(x=>x.SomeKey,x=>x.SomeValue)
}).ToList();
如何修复TestCDict可以为空

/Lasse

将其更改为:

TestCDict = a.TableC == null ? null
            : a.TableC.ToDictionary(x => x.SomeKey, x => x.SomeValue)
或者,如果您希望在
TestCDict
中使用空字典而不是空字典,请执行以下操作:

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

似乎更像是一个参考问题。我可能需要使用一些嵌套查询来“包含”TableC中的值。表示它只能比较字符串、int等基本内容,而不能比较实体类型