Freigeben über


Die FilterExpression-Klasse verwenden

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

In Microsoft Dynamics 365 und Microsoft Dynamics 365 (online) können Sie die FilterExpression-Klasse dazu verwenden, eine Abfrage zu erstellen, die Mehrfachbedingungen ausdrückt. Beispielsweise können Sie einen Abfrageausdruck erstellen, der die Entsprechung einer SQL-Anweisung, wie ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond' ist.

In der folgenden Tabelle werden die Eigenschaften der FilterExpression-Klasse aufgeführt:

Eigenschaft

Beschreibung

Conditions

Ruft Bedingungsausdrücke ab oder legt sie fest, die Attribute, Zustandsoperatoren und Attributwerte enthalten.

FilterOperator

Ruft logische AND/OR-Filteroperatoren ab oder legt sie fest. Dies wird mit der LogicalOperator-Enumeration festgelegt.

Filters

Ruft eine Hierarchie von Bedingung und logischen Filterausdrücken ab oder legt diese fest, die die Ergebnisse der Abfrage filtern.

IsQuickFindFilter

Ruft einen Wert ab oder legt diesen fest, der angibt, ob der Ausdruck Teil einer Schnellsuchabfrage ist.

Die FilterExpression-Klasse beinhaltet auch mehrere Hilfsmethoden, mit denen Abfragen leichter erstellt werden können. Die AddCondition-Methode fügt der Conditions-Eigenschaft für FilterExpression ein ConditionExpression-Element hinzu und verringert die Codemenge, die zur Erstellung des Bedingungsausdrucks benötigt wird. Die AddFilter-Methode fügt der Filters-Eigenschaft der FilterExpression-Klasse einen neuen Filter hinzu.

In diesem Thema

Filterausdruckbeispiel

Informationen zur IsQuickFindFilter-Eigenschaft

Filterausdruckbeispiel

Im folgenden Code wird gezeigt, wie die FilterExpression-Klasse verwendet wird.

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

Informationen zur IsQuickFindFilter-Eigenschaft

Sie können FilterExpression.IsQuickFindFilter-Eigenschaft verwenden, die analog ist zum isquickfindfields-Attribut, das auf dem filter-Knoten in Fetch-XML vorhanden ist. Wenn eine Fetch-Abfrage gespeichert wird, wird diese in den IsQuickFind-Eigenschaften der Entitäten SavedQuery und UserQuery gespeichert. Die IsQuickFindFilter-Eigenschaft wurde hinzugefügt, um zwischen Abfrageausdruck und und Fetch-XML-Abfragen Konsistenz zu erreichen.

Die folgenden Regeln gelten für die IsQuickFindFilter-Eigenschaft:

  • Dieses Feld kann nur für Filterausdrücke mit einem logischen Operator des Typs LogicalOperator.Or auf true festgelegt werden. Falls es für Ausdrücke mit dem logischen Operator vom Typ LogicalOperator.And festgelegt wird, wird die IsQuickFindFilter-Eigenschaft ignoriert.

  • Nur ein Filterausdruck in einer Filterausdruckhierarchie kann auf IsQuickFindFilter = true festgelegt werden. Wird mehr als eine gefunden, wird eine Ausnahme ausgelöst.

  • Wenn ein Filterausdruck IsQuickFindFilter auf true festgelegt ist, kann sie keine untergeordneten Filterausdruckeigenschaften haben. Sie kann nur ConditionExpression-Eigenschaften haben. Wenn Sie einen untergeordneten Filterausdruck hinzufügen, wird eine Ausnahme ausgelöst.

  • Alle Bedingungsausdrücke, die sich auf einen Filterausdruck beziehen, bei dem IsQuickFindFilter auf true festgelegt ist, müssen einzelne, nicht Nullwertbedingungen sein. Mit anderen Worten, da eine Bedingung aus Attribut, Operator und Wert besteht, werden nur Bedingungen unterstützt, bei denen die Wertseigenschaft ein einzelner Wert ist, der nicht Null ist. Außerdem sind die einzigen Bedingungsoperatoren, die auf diesen Bedingungsausdrücken unterstützt werden, solche, die einem Einzelwert verwenden, der nicht NULL ist. Wenn ein Null-Wert oder mehrere Werte erkannt werden, wird eine Ausnahme ausgelöst.

Siehe auch

FilterExpression
Erstellen von Abfragen mit QueryExpression
Verwenden einer linken äußeren Verknüpfung in QueryExpression für Abfragen nach Datensätzen, die „nicht in“ sind.
Verwenden der ConditionExpression-Klasse

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright