[英]Is there default value for expression, which doesn't influence on it?
我在我的應用程序中按某些項目進行了篩選。 它使用表達式查詢工作,開頭是NULL。
在過濾期間,有很多IF語句,這些語句檢查查詢是否為NULL。 我需要避免重復,但是問題是我無法添加條件,例如query.And(exp)如果query為NULL。
因此,在添加條件之前-查詢變量必須具有值。 我的第一個想法是添加條件並在應用過濾器之前將其刪除,但是我無法從主體中將其刪除,因為它不是字符串,並且我還沒有找到這種方法。 然后,我嘗試添加條件,該條件告訴過濾器接受ID等於MAXINT的項目,但這不起作用,因為查詢主體看起來像{p => p.ID == 2147483647還有}。 不是OR,而是AND。 因此,有0個項目。
Expression<Func<Project, bool>> query = null, exp = null;
這就是現在每個IF語句中的工作方式:
if (filter.ViewSomeProjects)
{
exp = p => (some conditions);
query = query != null ? query.And(exp) : exp;
}
這就是我希望它如何工作:
if (filter.ViewSomeProjects)
{
query.And(some conditions);
}
因此,我無法做到自己想要的,而查詢開始時為NULL。
我的問題是:有什么方法可以刪除表達主體的一部分? 是否可以在表達式中添加無用的條件,而不會影響結果?
謂詞生成器喬阿爾巴哈利有True
和False
,你可以作為起點使用。
public static Expression<Func<T, bool>> True<T> () { return f => true; }
public static Expression<Func<T, bool>> False<T> () { return f => false; }
如果您從其中之一開始,則可以根據默認行為是什么來建立查詢(通常,將限制添加到默認值“所有結果”時,True可以正常工作。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.