Utilizzare la classe di FilterExpression

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

In Microsoft Dynamics 365 e Microsoft Dynamics 365 (online), è possibile utilizzare la classe FilterExpression per creare una query che esprima più condizioni. Ad esempio, è possibile creare una query di espressione che è equivalente a un'istruzione SQL come ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond'.

La tabella seguente elenca le proprietà per la classe FilterExpression.

Proprietà

Descrizione

Conditions

Ottiene o imposta espressioni di condizione che includono attributi, operatori di condizione e valori di attributi.

FilterOperator

Ottiene o imposta gli operatori logici di filtro AND/OR. Si imposta utilizzando l'enumerazione LogicalOperator.

Filters

Ottiene o imposta una gerarchia di condizioni e di espressioni di filtro logiche che filtrano i risultati della query.

IsQuickFindFilter

Ottiene o imposta un valore che indica se l'espressione fa parte di una query di ricerca rapida.

La classe FilterExpression include inoltre diversi metodi di supporto che rendono più semplice la creazione di query. Il metodo AddCondition aggiunge un ConditionExpression per la proprietà Conditions per FilterExpression, riducendo la quantità di codice necessario per costruire l'espressione di condizione. Il metodo AddFilter aggiunge un nuovo filtro alla proprietà Filters della classe FilterExpression.

In questo argomento

Esempio di espressione di filtro

Informazioni sulla proprietà IsQuickFindFilter

Esempio di espressione di filtro

Nell'esempio di codice seguente viene illustrato come utilizzare 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("---------------------------------------");

Informazioni sulla proprietà IsQuickFindFilter

È possibile utilizzare la proprietà FilterExpression.IsQuickFindFilter che è analoga all'attributo isquickfindfields esistente nel nodo filter in Fetch XML. Quando una query Fetch viene salvato, viene archiviata nelle proprietà IsQuickFind delle entità UserQuery e SavedQuery. La proprietà IsQuickFindFilter è stata aggiunta per fornire la coerenza tra query Fetch XML e espressione di query.

Le seguenti regole si applicano alla proprietà IsQuickFindFilter:

  • Questo campo può essere impostato solo su true per espressioni di filtro con un operatore logico di tipo LogicalOperator.Or. Se è impostato per espressioni con un operatore logico di tipo LogicalOperator.And, la proprietà IsQuickFindFilter viene ignorata.

  • Solo un'espressione di filtro in una gerarchia di espressione di filtro può essere impostata con IsQuickFindFilter = true. Se viene rilevata più di una, viene generata un'eccezione.

  • Se un'espressione di filtro ha IsQuickFindFilter impostato su true, non può disporre delle proprietà di espressione di filtro figlio, può disporre solo di proprietà ConditionExpression. Se si aggiunge un'espressione di filtro figlio, viene generata un'eccezione.

  • Tutte le espressioni di condizione correlate a un'espressione di filtro con IsQuickFindFilter impostato su true devono essere condizioni di valore unico diverso da null. Ovvero considerata una condizione che si compone di attributo, operatore e valore, solo le condizioni in cui la proprietà di valore è un unico valore che non è null sono supportate. Inoltre, gli unici operatori di condizione supportati in queste espressioni di condizione sono quelli che funzionano con un unico valore diverso da null. Se un valore null o più valori vengono rilevati, viene generata un'eccezione.

Vedere anche

FilterExpression
Compilare query con QueryExpression
Utilizzare un left outer join in QueryExpression per eseguire query per i record "non contenuti" in un set
Utilizzare la classe ConditionExpression

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright