繁体   English   中英

C#Linq谓词生成从列表中删除所有空值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM