【发布时间】:2019-05-14 11:09:42
【问题描述】:
如何在 LINQ 中的 Where 谓词中指定条件而不会出现空引用异常。例如,如果q 是一个 IQueryable 我该怎么做:
Expression<Func<ProductEntity,bool>> predicate = p => !search.CategoryId.HasValue || (search.CategoryId.HasValue && search.CategoryId == p.CategoryId);
var q2 = q.Where(predicate);
这里的search 是一个对象,它包含可能的搜索条件,这些条件可能会设置也可能不会像搜索一样设置。CategoryId 可能未设置,但如果是,我想获取由该条件设置的产品。
当我这样做时,我得到空引用异常。
【问题讨论】: