Utiliser la classe ConditionExpression
Dans Microsoft Dataverse, vous pouvez utiliser la classe ConditionExpression pour comparer une colonne de table à une valeur ou à un ensemble de valeurs à l’aide d’un opérateur, tel que « égal à » ou « supérieur à ». La classe ConditionExpression
vous permet de passer les expressions de condition comme paramètres à d’autres classes, telles que QueryExpression et FilterExpression.
Le tableau suivant répertorie les propriétés que vous pouvez définir pour créer une condition à l’aide de la classe d’ConditionExpression
.
Propriété | Description |
---|---|
AttributeName | Spécifie le nom logique de la colonne dans l’expression de condition. |
Operator | Spécifie l’opérateur de condition. La définition s’effectue à l’aide de l’énumération ConditionOperator. |
Values | Spécifie les valeurs de la colonne. |
Lors de l’utilisation de la méthode d’AddCondition(ConditionExpression) (ou du constructeur pour ConditionExpression), il importe de savoir si le tableau est ajouté comme valeurs multiples ou comme tableau.
L’exemple de code suivant affiche deux résultats différents selon la façon dont le tableau est utilisé.
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
Dans certains cas, il est nécessaire d’effectuer un cast vers object[]
ou vers object
, selon le comportement souhaité.
Lorsque vous créez une condition qui compare une valeur de colonne à une énumération, telle qu’un code d’état, vous devez utiliser la méthode ToString
pour convertir la valeur en chaîne.
Exemple : utiliser la classe ConditionExpression
L’exemple de code suivant montre comment utiliser la classe 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("---------------------------------------");
Exemple : test d’état inactif
L’exemple de code suivant montre comment utiliser la classe ConditionExpression
pour tester l’état inactif.
ConditionExpression condition3 = new ConditionExpression();
condition3.AttributeName = "statecode";
condition3.Operator = ConditionOperator.Equal;
condition3.Values.Add(AccountState.Active);
Comparaison de colonnes
L’exemple suivant montre comment comparer des colonnes à l’aide de la classe ConditionExpression
:
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);
}
En passant true
comme valeur pour la propriété CompareColumns , la value
est traitée comme le nom de la deuxième colonne à laquelle comparer les valeurs dans attributeName
. La valeur par défaut est false.
Vous pouvez également définir cette propriété à l’aide du constructeur compareColumns
ConditionExpression
facultatif. L’exemple suivant crée une condition pour ne renvoyer que les enregistrements où le prénom et le nom sont identiques,
var expression = new ConditionExpression(
attributeName: "firstname",
conditionOperator: ConditionOperator.Equal,
compareColumns: true,
value: "lastname");
Quittez le paramètre compareColumns
, pour créer une condition pour ne renvoyer que les enregistrements dans lesquels prénom est John
.
var expression = new ConditionExpression(
attributeName: "firstname",
conditionOperator: ConditionOperator.Equal,
value: "John");
Utilisez des caractères génériques dans les conditions à l’aide de valeurs de chaîne
Vous pouvez utiliser des caractères génériques lorsque vous construisez des requêtes à l’aide de conditions sur des valeurs de chaîne. Plus d’informations : Utilisez des caractères génériques dans les conditions pour les valeurs de chaîne
Voir aussi
Générer des requêtes
Générer des requêtes avec QueryExpression
Utiliser la classe FilterExpression
ConditionExpression
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).