簡體   English   中英

是否有表達式的默認值,對它沒有影響?

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

我的問題是:有什么方法可以刪除表達主體的一部分? 是否可以在表達式中添加無用的條件,而不會影響結果?

謂詞生成器喬阿爾巴哈利有TrueFalse ,你可以作為起點使用。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM