[英]C# Linq predicate generation remove all null values from list
我正在尝试使用linq谓词生成过滤器代码。 当我对对象使用谓词!= null时:
public static Expression<Func<ContactPermitsSearch, bool>> PermitNumberNotNull()
{
Expression<Func<ContactPermitsSearch, bool>> predicate = contactPermit => contactPermit.PermitNumber != null;
return predicate;
}
称为:
public static IQueryable<ContactPermitsSearch> FilterByNameMailingPermit(this IQueryable<ContactPermitsSearch> queryable, string search, bool filterOn)
{
var predicate = PredicateBuilder.True<ContactPermitsSearch>();
predicate = predicate.And(PermitNumberNotNull());
var filtered = queryable.AsExpandable().Where(predicate);
return filtered;
}
生成的SQL语句不包含PermitNumberNotNull谓词语句。
关于修复此问题的想法?
代码显然没有错。 我敢肯定,如果在与PermitNumberNotNull()
合并后在调试器中检查predicate
,您会看到非null谓词是表达式树的一部分。
唯一合理的假设是,EF知道contactPermit.PermitNumber
永远不能为null,因为它是必填属性。 因此,它只是忽略了谓词。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.