Verwenden der ConditionExpression-Klasse

In Microsoft Dataverse können Sie die Klasse ConditionExpression verwenden, um eine Tabellenspalte mit einem Wert oder einer Gruppe von Werten zu vergleichen, indem Sie einen Operator wie „gleich“ oder „größer als“ verwenden. Bei der ConditionExpression-Klasse können Sie Bedingungsausdrücke als Parameter an andere Klassen übergeben, wie beispielsweise QueryExpression und FilterExpression.

In der folgenden Tabelle sind die Eigenschaften aufgelistet, die Sie festlegen können, um eine Bedingung mithilfe der ConditionExpression-Klasse zu erstellen.

Eigenschaft Beschreibung
AttributeName Gibt den logischen Namen der Spalte im Bedingungsausdruck an.
Operator Gibt den Bedingungsoperator an. Dies wird mit der ConditionOperator-Enumeration festgelegt.
Values Gibt die Werte der Spalte an.

Wenn Sie die Methode AddCondition(ConditionExpression) (oder den Konstruktor für ConditionExpression) verwenden, ist es wichtig zu wissen, ob das Array als mehrere Werte oder als Array hinzugefügt werden soll.

Das folgende Codebeispiel zeigt zwei unterschiedliche Ergebnisse, abhängig davon, wie das Array verwendet wird.

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  
  

In einigen Fällen ist erforderlich, entweder in object[] oder object umzuwandeln, je nach dem gewünschten Verhalten.

Wenn Sie eine Bedingung erstellen, die einen Spaltenwert mit einer Aufzählung vergleicht, z. B. einem Statuscode, müssen Sie die ToString-Methode verwenden, um den Wert in eine Zeichenfolge zu konvertieren.

Beispiel: Verwenden der ConditionExpression-Klasse

Im folgenden Code wird gezeigt, wie die ConditionExpression-Klasse verwendet wird.

  
//  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("---------------------------------------");  

Beispiel: Testen auf inaktiven Zustand

Das folgende Codebeispiel zeigt, wie die ConditionExpression-Klasse verwendet wird, um auf den Status "Inaktiv" zu testen.

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

Vergleich von Spalten

Das folgende Beispiel zeigt, wie Sie Spalten mit der Klasse ConditionExpression vergleichen können:

public static EntityCollection ColumnComparisonExample(IOrganizationService service)
{
    QueryExpression query = new("contact")
    {
        Criteria = new FilterExpression(LogicalOperator.And)
        {
            Conditions = {
                {
                    new ConditionExpression(){
                        AttributeName = "firstname",
                        Operator = ConditionOperator.Equal,
                        CompareColumns = true,
                        Values = {
                            {"lastname"}
                        }
                    }
                }
            }
        }
    };
    return service.RetrieveMultiple(query);
}

Wenn Sie true als Wert für die Eigenschaft CompareColumns übergeben, wird die value als Name der zweiten Spalte behandelt, mit der die Werte in attributeName verglichen werden. Der Standardwert ist „falsch“.

Sie können diese Eigenschaft auch mit dem optionalen Konstruktor compareColumns ConditionExpression festlegen. Das folgende Beispiel erstellt eine Bedingung, die nur Datensätze zurückgibt, bei denen Vor- und Nachname identisch sind,

var expression = new ConditionExpression(
    attributeName: "firstname",
    conditionOperator: ConditionOperator.Equal,
    compareColumns: true,
    value: "lastname");

Lassen Sie den compareColumns Parameter weg, um eine Bedingung zu erstellen, die nur Datensätze zurückgibt, bei denen der Vorname John ist.

var expression = new ConditionExpression(
    attributeName: "firstname",
    conditionOperator: ConditionOperator.Equal,
    value: "John");

Verwenden Sie Platzhalterzeichen in Bedingungen mit Zeichenfolgenwerte

Sie können Platzhalterzeichen verwenden, wenn Sie Abfragen mit Bedingungen auf Zeichenfolgenwerten erstellen. Weitere Informationen: Verwenden Sie Platzhalterzeichen in Bedingungen für Zeichenfolgenwerte

Siehe auch

Erstellen von Abfragen
Erstellen von Abfragen mit QueryExpression
Die FilterExpression-Klasse verwenden
ConditionExpression

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).