使用 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 類別的屬性。
屬性 |
描述 |
取得或設定條件運算式,包括屬性、條件運算子和屬性值。 |
|
取得或設定邏輯 AND/OR 篩選運算子。 這是使用 LogicalOperator 列舉所設定。 |
|
取得或設定條件和邏輯篩選運算式的階層,用於篩選查詢的結果。 |
|
取得或設定值,指出運算式是否為快速尋找查詢的一部分。 |
FilterExpression 類別也包含可讓您更輕鬆建立查詢的數個 Helper 方法。AddCondition 方法會新增 ConditionExpression 至 FilterExpression 的 Conditions 屬性,減少建構條件運算式所需的程式碼數量。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 查詢儲存時,它會儲存在 SavedQuery 和 UserQuery 實體 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. 著作權所有,並保留一切權利。 著作權