Func中的空对象

时间:2014-07-22 19:09:05

标签: c# linq lambda

我有一个过滤器如下:

filter = project => project.Plan.ProgressStatus == progressStatus;

我正在创建一个基于progressStatus的过滤器,该过滤器将传递给方法。

然后我将此过滤器传递给where运算符。

var projects = _projectService.Where(filter);

我回来NRE,因为Plan为空。

如何安全地查询Plan.ProgressStatus等于我作为参数传入的对象?

2 个答案:

答案 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;
};