Partager via


Utiliser la classe FilterExpression

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Dans Microsoft Dynamics 365 et Microsoft Dynamics 365 (Online), vous pouvez utiliser la classe FilterExpression pour créer une requête qui exprime plusieurs conditions. Par exemple, vous pouvez créer une expression de requête qui est l’équivalent d’une instruction SQL comme ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond'.

Le tableau suivant répertorie les propriétés de la classe FilterExpression :

Propriété

Description

Conditions

Obtient ou définit les expressions de condition qui incluent les attributs, les opérateurs de condition et les valeurs d’attribut.

FilterOperator

Obtient ou définit les opérateurs de filtre logiques AND/OR. La définition s’effectue à l’aide de l’énumération LogicalOperator.

Filters

Obtient ou définit une hiérarchie des expressions de filtre conditionnel et logique qui filtrent les résultats de la requête.

IsQuickFindFilter

Obtient ou définit une valeur qui indique si l’expression fait partie d’une requête recherche rapide.

La classe FilterExpression contient également plusieurs méthodes d’assistance qui facilitent la création de requêtes. La méthode AddCondition ajoute un ConditionExpression à la propriété Conditions pour le FilterExpression, réduisant ainsi la quantité de code nécessaire pour créer l’expression de condition. La méthode AddFilter ajoute un nouveau filtre à la propriété Filters de la classe FilterExpression.

Contenu de la rubrique

Exemple d’expression de filtre

À propos de la propriété IsQuickFindFilter

Exemple d’expression de filtre

L’exemple de code suivant montre comment utiliser la classe FilterExpression.

QueryExpression query = new QueryExpression("contact"); 
query.ColumnSet.AddColumns("firstname", "lastname", "address1_city"); 

query.Criteria = new FilterExpression(); 
query.Criteria.AddCondition("address1_city", ConditionOperator.Equal, "Redmond"); 

FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.Or); 
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Tharpe"); 
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Brown"); 

// Pass query to service proxy 
EntityCollection results = _serviceProxy.RetrieveMultiple(query); 
Console.WriteLine(); 
Console.WriteLine("Query using QE with multiple conditions and filters"); 
Console.WriteLine("---------------------------------------"); 

// Print results 
foreach (var a in results.Entities) 
{ 
Console.WriteLine("Name: {0} {1}", a.GetAttributeValue<string>("firstname"), a.GetAttributeValue<string>("lastname")); 
Console.WriteLine("City: {0}", a.GetAttributeValue<string>("address1_city")); 
} 
Console.WriteLine("---------------------------------------");

À propos de la propriété IsQuickFindFilter

Vous pouvez utiliser la propriété FilterExpression.IsQuickFindFilter, qui est analogue à l’attribut isquickfindfields qui existe sur le nœud filter dans Fetch XML. Lorsqu’une requête Fetch est enregistrée, elle est stockée dans les propriétés IsQuickFind des entités SavedQuery et UserQuery. La propriété IsQuickFindFilter a été ajoutée pour assurer la cohérence entre les requêtes Query Expression et Fetch XML.

Les règles suivantes appliquent à la propriété IsQuickFindFilter :

  • Ce champ peut être défini sur true pour les expressions de filtre avec un opérateur logique de type LogicalOperator.Or. Si elle est définie pour les expressions avec un opérateur logique de type LogicalOperator.And, la propriété IsQuickFindFilter est ignorée.

  • Une seule expression de filtre dans une hiérarchie d’expressions de filtre peut être définie avec IsQuickFindFilter = true. S’il en existe plusieurs, une exception est levée.

  • Si une expression de filtre a la propriété IsQuickFindFilter définie sur true, elle ne peut avoir aucune propriété d’expression de filtre enfant et peut uniquement avoir des propriétés ConditionExpression. Si vous ajoutez une expression de filtre enfant, une exception est levée.

  • Toutes les expressions de condition associées à une expression de filtre avec la propriété IsQuickFindFilter définie sur true doivent être des conditions de valeur non null. En d’autres termes, vu qu’une condition est composée d’un attribut, d’un opérateur et d’une valeur, seules les conditions où la propriété de la valeur est une valeur unique non null sont prises en charge. En outre, les seuls opérateurs de condition pris en charge sur ces expressions de condition sont ceux qui fonctionnent avec une valeur unique non null. Si une valeur null ou plusieurs valeurs sont détectées, une exception est levée.

Voir aussi

FilterExpression
Générer des requêtes avec QueryExpression
Utilisez une jointure externe gauche dans QueryExpression afin de rechercher des enregistrements « pas dans »
Utiliser la classe ConditionExpression

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright