Delen via


De klasse FilterExpression gebruiken

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

In Microsoft Dynamics 365 en Microsoft Dynamics 365 (online) kunt u deze klasse FilterExpression gebruiken om een query op te stellen die meerdere voorwaarden uitdrukt. Zo kunt u bijvoorbeeld een query-expressie maken die het equivalent is van een SQL-instructie als ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond'.

De volgende tabel bevat de eigenschappen voor de klasse FilterExpression.

Eigenschap

Beschrijving

Conditions

Haalt voorwaarde-expressies op of stelt deze in die kenmerken, voorwaardenoperatoren en kenmerkwaarden bevatten.

FilterOperator

Haalt logische AND/OR-filteroperatoren op of stelt deze in. Dit wordt ingesteld door de opsomming LogicalOperator te gebruiken.

Filters

Haalt een hiërarchie van voorwaarde- en logische filterexpressies op of stelt deze in die de resultaten van de query filteren.

IsQuickFindFilter

Haalt een waarde op of stelt deze in die aangeeft of de expressie onderdeel uitmaakt van een query voor snel zoeken.

De klasse FilterExpression bevat tevens diverse helpermethoden die het gemakkelijker maken om query's op te stellen. De methode AddCondition voegt een ConditionExpression toe aan de eigenschap Conditions voor de FilterExpression, waardoor de hoeveelheid code die nodig om de voorwaarde-expressie te bouwen wordt verminderd. De methode AddFilter voegt een nieuw filter toe aan de eigenschap Filters van de klasse FilterExpression.

In dit onderwerp

Voorbeeld van filterexpressie

Info over de eigenschap IsQuickFindFilter

Voorbeeld van filterexpressie

In het volgende codevoorbeeld ziet u hoe u de klasse FilterExpression kunt gebruiken.

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

Info over de eigenschap IsQuickFindFilter

U kunt de eigenschap FilterExpression .IsQuickFindFilter gebruiken, die analoog is aan het kenmerk isquickfindfields dat bestaat voor het filter-knooppunt in Fetch XML. Wanneer een Fetch-query wordt opgeslagen, wordt deze opgeslagen in de eigenschappen IsQuickFind van de entiteiten SavedQuery en UserQuery. De eigenschap IsQuickFindFilter is toegevoegd om consistentie te bieden tussen Query-expressie Fetch XML-query's.

De volgende regels gelden voor de eigenschap IsQuickFindFilter:

  • Dit veld kan alleen worden ingesteld op true voor filterexpressies met een logische operator van het type LogicalOperator.Or. Als het is ingesteld voor expressies met een logische operator van het type LogicalOperator.And, wordt de eigenschap IsQuickFindFilter genegeerd.

  • Slechts één filterexpressie in een hiërarchie van filterexpressies kan worden ingesteld met IsQuickFindFilter = true. Als er meerdere worden gevonden, treedt er een uitzondering op.

  • Als een filterexpressie IsQuickFindFilter heeft ingesteld op true, kan deze geen onderliggende eigenschappen van filterexpressies hebben, maar alleen ConditionExpression-eigenschappen. Als u een onderliggende filterexpressie toevoegt, treedt er een uitzondering op.

  • Alle voorwaarde-expressies die verband houden met een filterexpressie waarbij IsQuickFindFilter is ingesteld op true, moeten enkele waardevoorwaarden zijn met een waarde die niet null is. Met andere woorden, aangezien een voorwaarde uit kenmerk, voorwaarde en waarde bestaat, worden alleen voorwaarden ondersteund waarbij de waarde-eigenschap een enkele waarde is die niet null is. Daarnaast worden alleen voorwaardenoperatoren die werken met een enkele waarde die niet null is ondersteund bij deze voorwaarde-expressies. Als een waarde null is of als er meerdere waarden worden gedetecteerd, treedt er een uitzondering op.

Zie ook

FilterExpression
Bouw query's met QueryExpression
Gebruik een left outer join in QueryExpression voor het uitvoeren van query's voor records "niet in"
De klasse ConditionExpression gebruiken

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht