Linq 对象引用未设置为对象的实例 - 内部集合 null



我遇到了导致异常的linq查询问题。 我知道为什么会发生异常,但我不确定重写查询的最佳方法是什么。 如果可能的话,我想把它放在linq,但如果这是更好的方法,我不反对使用循环和空对象检测。

这是我的查询 - 问题是AnalysisResults有时为 null(而不仅仅是一个空的实例化集合)。 也就是说,前置集合也可能为 null,因此我更喜欢一种可以应用于所有集合的方法。

benchmarks = (from p in cacheData.SiteSources
from q in p.SiteGroup.SiteGroupSites
from r in q.Site.AnalysisResults
where r.BufferTypeId == bufferTypeId &&
r.BufferValue == bufferValue
select r).ToList();

有没有一种简洁的方法来解决空AnalysisResults

是的,使用Where过滤null的情况:

benchmarks = (from p in cacheData.SiteSources
from q in p.SiteGroup.SiteGroupSites
where q.Site.AnalysisResults!=null
from r in q.Site.AnalysisResults
where r.BufferTypeId == bufferTypeId && r.BufferValue == bufferValue
select r).ToList();

您可以添加一些where子句来检查空

benchmarks = (from p in cacheData.SiteSources
where p.SiteGroup.SiteGroupSites != null
from q in p.SiteGroup.SiteGroupSites
where q.Site.AnalysisResults != null
from r in q.Site.AnalysisResults
where r.BufferTypeId == bufferTypeId &&
r.BufferValue == bufferValue
select r).ToList();

最新更新