使用linq和实体框架的嵌套字典nullreferenceexception
我试图使用嵌套的select填充字典,但得到了nullreference异常,因为TableC中的对象可能不存在使用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,
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等基本内容,而不能比较实体类型