次の方法で共有


FilterExpression クラスの使用

Microsoft Dataverse では、FilterExpression クラスを使用して、複数の条件を表すクエリを作成できます。 たとえば、([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond' のような SQL ステートメントと同等のクエリ式を作成できます。

次の表では、FilterExpression クラスのプロパティを示します。

プロパティ 内容
Conditions テーブルの列、条件演算子、および列の値を含む条件式を取得または設定します。
FilterOperator 論理 AND/OR フィルター演算子を取得または設定します。 これは、LogicalOperator 列挙体を使用して設定します。
Filters クエリの結果をフィルターする条件式および論理フィルター式の階層を取得または設定します。
IsQuickFindFilter 式が簡易検索クエリの一部であるかどうかを示す値を取得または設定します。

FilterExpression クラスには、クエリの作成が簡単になる複数のヘルパー メソッドも含まれます。 FilterExpression.ConditionExpression メソッドを使用すると ConditionExpressionFilterExpressionConditions プロパティに追加され、条件式の作成に必要なコードが減ります。 AddFilter.LogicalOperator メソッドは、新しいフィルターを FilterExpression クラスの Filters プロパティに追加します。

フィルター式の例

次のコード例は、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 プロパティには次のルールが適用されます。

  • このフィールドを true に設定できるのは、論理演算子の種類が LogicalOperator.Or のフィルター式に対してのみです。 論理演算子の種類が LogicalOperator.And のフィルター式に対して設定しても、IsQuickFindFilter プロパティは無視されます。

  • フィルター式階層内の 1 つのフィルター式に対してのみ、IsQuickFindFilter = true を設定できます。 複数のフィルター式が見つかった場合は、例外がスローされます。

  • フィルター式で IsQuickFindFiltertrue に設定している場合、子フィルター式のプロパティを追加することはできません。追加できるのは ConditionExpression のプロパティのみです。 子フィルター式を追加した場合は、例外がスローされます。

  • IsQuickFindFiltertrue に設定しているフィルター式に関連するすべての条件式は、null 以外の 1 つの値を返す条件式であることが必要です。 つまり、条件が列、演算子、および値で構成されている場合、value プロパティが null でない単一の値である条件のみがサポートされます。 さらに、これらの条件式でサポートされる条件演算子は、null 以外の 1 つの値を返す演算子のみです。 null 値または複数の値が検出された場合は、例外がスローされます。

関連項目

QueryExpression でクエリを作成する
左外部結合を QueryExpression で使用して "存在しない" 記録をクエリする
ConditionExpression クラスの使用
FilterExpression

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。