Share via


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