QueryExpression查詢中的OR寫法


CRM當中的查詢一般會采用兩種方式,QueryExpression查詢和FetchXML查詢。一般用的比較多的是QueryExpression,但是由於QueryExpression種or寫法不太熟練,所以當碰到這種有or邏輯查詢的時候,我都會直接去系統高級查詢中構建一個查詢,然后將FetchXML下載下來,copy到代碼中,這樣不容易出錯且簡單。

但是QueryExpression的OR查詢還是要掌握一下:
查詢邏輯:(客戶類型為10並且客戶行業為10)或者(客戶類型不等於10)

QueryExpression query = new QueryExpression("Account");
query.ColumnSet = new ColumnSet(true);
query.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0);
FilterExpression FilterOr = new FilterExpression
{
   FilterOperator = LogicalOperator.Or,
   Filters =
   {
      new FilterExpression
      {
         FilterOperator = LogicalOperator.And,
         Conditions =
         {
            new ConditionExpression("new_accounttype",ConditionOperator.Equal,10),
            new ConditionExpression("new_accountindustry",ConditionOperator.Equal,10)
         }
      },
      new FilterExpression
      {
        FilterOperator=LogicalOperator.And,
        Conditions =
        {
           new ConditionExpression("new_accounttype",ConditionOperator.NotEqual,10),
        }
      }
  }
};
query.Criteria.Filters.Add(FilterOr);

EntityCollection result = AdminService.RetrieveMultiple(query);

通過上述代碼可以看出,當涉及到OR查詢時一般會采用FilterExpression來完成。

備注:當有多個OR查詢的時候,就構造多個FilterExpression,然后在最后的add時會有一些差異

query.Criteria.Filters.AddRange(new List<FilterExpression>() { FilterAnd, FilterOr, FilterOrNew });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM