FilterExpression クラスの使用
公開日: 2017年1月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
Microsoft Dynamics 365 および Microsoft Dynamics 365 (オンライン) では、FilterExpression クラスを使用して、複数の条件を表すクエリを作成できます。 たとえば、([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond' のような SQL ステートメントと同等のクエリ式を作成できます。
次の表では、FilterExpression クラスのプロパティを示します。
プロパティ |
説明 |
属性、条件演算子、および属性値を含む条件式を取得または設定します。 |
|
論理 AND/OR フィルター演算子を取得または設定します。 これは、LogicalOperator 列挙体を使用して設定します。 |
|
クエリの結果をフィルターする条件式および論理フィルター式の階層を取得または設定します。 |
|
式が簡易検索クエリの一部であるかどうかを示す値を取得または設定します。 |
FilterExpression クラスには、クエリの作成が簡単になる複数のヘルパー メソッドも含まれます。AddCondition メソッドを使用すると ConditionExpression の Conditions プロパティに FilterExpression が追加されるので、条件式の作成に必要なコードが減ります。AddFilter メソッドは、新しいフィルターを Filters クラスの FilterExpression プロパティに追加します。
このトピックの内容
フィルター式の例
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 プロパティには次のルールが適用されます。
このフィールドを true に設定できるのは、論理演算子の種類が LogicalOperator.Or のフィルター式に対してのみです。 論理演算子の種類が LogicalOperator.And のフィルター式に対して設定しても、IsQuickFindFilter プロパティは無視されます。
フィルター式階層内の 1 つのフィルター式に対してのみ、IsQuickFindFilter = true を設定できます。 複数のフィルター式が見つかった場合は、例外がスローされます。
フィルター式で IsQuickFindFilter を true に設定している場合、子フィルター式のプロパティを追加することはできません。追加できるのは ConditionExpression のプロパティのみです。 子フィルター式を追加した場合は、例外がスローされます。
IsQuickFindFilter を true に設定しているフィルター式に関連するすべての条件式は、null 以外の 1 つの値を返す条件式であることが必要です。 つまり、条件式は属性、演算子、および値で構成されていて、その条件式の value プロパティの値が null 以外の 1 つの値であることが必要です。 さらに、これらの条件式でサポートされる条件演算子は、null 以外の 1 つの値を返す演算子のみです。null 値または複数の値が検出された場合は、例外がスローされます。
関連項目
FilterExpression
QueryExpression でクエリを作成する
左外部結合を QueryExpression で使用して "存在しない" 記録をクエリする
ConditionExpression クラスの使用
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 著作権