簡體   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