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).