ConditionExpression クラスの使用

注意

エンティティとテーブルの違いがわかりませんか? Microsoft Dataverse で「開発者: 用語を理解する」を参照してください。

Microsoft Dataverse では、ConditionExpression クラスを使用して、"equal to" または "greater than" のような演算子を使用してテーブルの列を値または値のセットと比較できます。 ConditionExpression クラスは、条件式をパラメーターとして他のクラス (QueryExpressionFilterExpression など) に引き渡せるようにします。

ConditionExpression クラスを使用して条件を作成する際に設定できるプロパティを次の表に示します。

プロパティ 内容
AttributeName 条件式の列の論理名を指定します。
Operator 条件演算子を指定します。 これは、ConditionOperator 列挙体を使用して設定します。
Values 列の値を指定します。

AddCondition(ConditionExpression) メソッド (または ConditionExpression のコンストラクター) を使用するときは、配列が複数の値として追加されるか、配列として追加されるかをよく理解したうえで、作業を行ってください。

次のコードは、配列の使い方によって結果が異なる例です。

string[] values = new string[] { "Value1", "Value2" };  
ConditionExpression c = new ConditionExpression("name", ConditionOperator.In, values);  
Console.WriteLine(c.Values.Count); //This will output 2   
string[] values = new string[] { "Value1", "Value2" }object value = values;  
ConditionExpression c = new ConditionExpression("name", ConditionOperator.In, value);  
Console.WriteLine(c.Values.Count); //This will output 1  
  

希望する動作に応じて、object[]object に型を変換しなければならない場合があります。

列の値を状態コードなどの列挙型と比較する条件を作成する場合は、ToString メソッドを使って値を文字列に変換する必要があります。

例: ConditionExpression クラスの使用

次のコード例は、ConditionExpression クラスの使用方法を示しています。

  
//  Query using ConditionExpression    
ConditionExpression condition1 = new ConditionExpression();  
condition1.AttributeName = "lastname";    
condition1.Operator = ConditionOperator.Equal;    
condition1.Values.Add("Brown");                    
FilterExpression filter1 = new FilterExpression();    
filter1.Conditions.Add(condition1);    
QueryExpression query = new QueryExpression("contact");    
query.ColumnSet.AddColumns("firstname", "lastname");    
query.Criteria.AddFilter(filter1);    
EntityCollection result1 = _serviceProxy.RetrieveMultiple(query);    
Console.WriteLine();    
Console.WriteLine("Query using Query Expression with ConditionExpression and FilterExpression");    
Console.WriteLine("---------------------------------------");    
foreach (var a in result1.Entities)    
{  
      Console.WriteLine("Name: " + a.Attributes["firstname"] + " " + a.Attributes["lastname"]);    
}    
Console.WriteLine("---------------------------------------");  

例: 非アクティブ状態のテスト

次のコード例は、ConditionExpression クラスを使用して非アクティブ状態をテストする方法を示しています。

  
ConditionExpression condition3 = new ConditionExpression();  
condition3.AttributeName = "statecode";  
condition3.Operator = ConditionOperator.Equal;  
condition3.Values.Add(AccountState.Active);  
  

SDK API を使用した列の比較

次の例は、SDK API と組織サービスを使用して列を比較する方法を示しています。

public ConditionExpression
(
  string attributeName,
  ConditionOperator conditionOperator,
  bool compareColumns,
  object value
)

public ConditionExpression
(
  string attributeName,
  ConditionOperator conditionOperator,
  bool compareColumns,
  object[] values
)

truecompareColumns パラメータの値として渡すことにより、valueattributeName の値を比較するための 2 番目の列の名前として扱われます。 false に渡し、代りにリテラル値として扱います。

たとえば、次のようなものです。

new ConditionExpression("firstname", ConditionOperator.Equal, true, "lastname");

このコードは、姓と名が同じであるレコードのみを返す条件を作成しますが、

new ConditionExpression("firstname", ConditionOperator.Equal, false, "John");

名が John であるレコードのみを返す条件を作成します。

詳細: クエリで列比較を使用する

文字列値を使用する条件でワイルドカード文字を使用する

文字列値の条件を使用してクエリを作成する場合は、ワイルドカード文字を使用できます。 詳細: 文字列値の条件でワイルドカード文字を使用する

関連情報

クエリの作成
QueryExpression でクエリを作成する
FilterExpression クラスの使用
ConditionExpression

注意

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

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