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