使用 FilterExpression 類別

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

在 Microsoft Dynamics 365 和 Microsoft Dynamics 365 (線上) 中,您可以使用 FilterExpression 類別建置運算多項條件的查詢。 例如,您可以建立查詢運算式,相當於 SQL 陳述式,例如 ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond'。

下表列出 FilterExpression 類別的屬性。

屬性

描述

Conditions

取得或設定條件運算式,包括屬性、條件運算子和屬性值。

FilterOperator

取得或設定邏輯 AND/OR 篩選運算子。 這是使用 LogicalOperator 列舉所設定。

Filters

取得或設定條件和邏輯篩選運算式的階層,用於篩選查詢的結果。

IsQuickFindFilter

取得或設定值,指出運算式是否為快速尋找查詢的一部分。

FilterExpression 類別也包含可讓您更輕鬆建立查詢的數個 Helper 方法。AddCondition 方法會新增 ConditionExpressionFilterExpressionConditions 屬性,減少建構條件運算式所需的程式碼數量。AddFilter 方法會將新的篩選新增至 FilterExpression 類別的 Filters 屬性。

本主題內容

篩選運算式範例

關於 IsQuickFindFilter 屬性

篩選運算式範例

下列程式碼範例將示範如何使用 FilterExpression 類別。

QueryExpression query = new QueryExpression("contact"); 
query.ColumnSet.AddColumns("firstname", "lastname", "address1_city"); 

query.Criteria = new FilterExpression(); 
query.Criteria.AddCondition("address1_city", ConditionOperator.Equal, "Redmond"); 

FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.Or); 
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Tharpe"); 
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Brown"); 

// Pass query to service proxy 
EntityCollection results = _serviceProxy.RetrieveMultiple(query); 
Console.WriteLine(); 
Console.WriteLine("Query using QE with multiple conditions and filters"); 
Console.WriteLine("---------------------------------------"); 

// Print results 
foreach (var a in results.Entities) 
{ 
Console.WriteLine("Name: {0} {1}", a.GetAttributeValue<string>("firstname"), a.GetAttributeValue<string>("lastname")); 
Console.WriteLine("City: {0}", a.GetAttributeValue<string>("address1_city")); 
} 
Console.WriteLine("---------------------------------------");

關於 IsQuickFindFilter 屬性

您可以使用 FilterExpression.IsQuickFindFilter 屬性,類似 Fetch XML 中 filter 節點上的 isquickfindfields 屬性。 當 Fetch 查詢儲存時,它會儲存在 SavedQueryUserQuery 實體 IsQuickFind 屬性中。 已新增 IsQuickFindFilter 屬性,提供查詢運算式與 Fetch XML 查詢之間的一致性。

下列規則適用於 IsQuickFindFilter 屬性:

  • 這個欄位只能對使用 LogicalOperator.Or 類型邏輯運算子的篩選運算式設定為 true。 如果對使用 LogicalOperator.And 類型邏輯運算子的運算式設定,則會忽略 IsQuickFindFilter 屬性。

  • 篩選運算式階層中,只有一個篩選運算式可以設定為 IsQuickFindFilter = true。 如果發現有多個,則會擲回例外狀況。

  • 如果篩選運算式的 IsQuickFindFilter 設為 true,則它無法擁有任何子篩選運算式屬性,只能有 ConditionExpression 屬性。 如果您新增子篩選運算式,則會擲回例外狀況。

  • 所有與 IsQuickFindFilter 設為 true 的篩選運算式相關的條件運算式,都必須是單一非 null 值條件。 換句話說,假設某項條件是由屬性、運算子和值所組成,則只支援值屬性為單一值且不是 null 的條件。 此外,這些條件運算式上唯一支援的條件運算子為能夠使用非 null 的單一值的運算子。 如果偵測到 null 值或多個值,則會擲回例外狀況。

另請參閱

FilterExpression
使用 QueryExpression 建立查詢
在 QueryExpression 中使用左外部聯結,查詢記錄 "not in"
使用 ConditionExpression 類別

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權