我有一个过滤器如下:
filter = project => project.Plan.ProgressStatus == progressStatus;
我正在创建一个基于progressStatus
的过滤器,该过滤器将传递给方法。
然后我将此过滤器传递给where
运算符。
var projects = _projectService.Where(filter);
我回来NRE
,因为Plan
为空。
如何安全地查询Plan.ProgressStatus等于我作为参数传入的对象?
答案 0 :(得分:3)
检查过滤器是否为null
:
filter = project => project.Plan != null && project.Plan.ProgressStatus == progressStatus;
如果_projectService
可能包含null
,请同时添加该检查:
filter = project => project != null
&& project.Plan != null
&& project.Plan.ProgressStatus == progressStatus;
答案 1 :(得分:0)
向您的func中的project
和/或project.Plan
个对象添加空检查。
filter = project =>
{
if(project == null || project.Plan == null)
return false;
return project.Plan.ProgressStatus == progressStatus;
};