Mit OData-Abfrageoptionen arbeiten

Abgeschlossen

Mit OData können Sie Filterausdrücke in der OData-URI verwenden, um die zurückgegebenen Ergebnisse einzuschränken, die Ergebnisse nach einem bestimmten Feld zu filtern, die Ergebnisse zu sortieren usw.

Sie können der OData-URI bestimmte Abfrageparameter bereitstellen. Alle Abfrageparameter beginnen mit einem Dollarzeichen ($). Geben Sie ein Fragezeichen (?) und die verschiedenen Abfrageparameter an, um mit der Angabe der Abfrageparameter zu beginnen. Die Abfrageparameter müssen durch ein kaufmännisches Und-Zeichen (&) getrennt werden.

Eine Teilmenge der Felder aus auswählen

Verwenden Sie die Option $select Filterausdruck, wenn Sie Datensätze mithilfe von OData abrufen möchten, aber nicht alle in einem Datensatz definierten Felder benötigen. Mit $select können Sie die Felder angeben, die Sie aus dem Datensatz abrufen möchten. Achten Sie bei der Verwendung von Feldern in einem Filterausdruck darauf, dass zwischen Groß‑ und Kleinschreibung unterschieden wird.

Im folgenden Beispiel werden die Felder Nr, Beschreibung und Stückpreis aus dem Artikeldatensatz ausgewählt. Das Dollarzeichen vor dem Schlüsselwort select wichtig – ohne funktioniert der Befehl nicht.

/Items?$select=No,Description,Unit_Price

Den Ergebnissatz bestellen

Sie können den Filterausdruck $orderby verwenden, um die Ergebnismenge zu bestellen Die Filterausdrücke werden alle auf Serverebene ausgeführt, wodurch die Leistung der Ergebnismenge verbessert wird, die Sie mit einem OData-Aufruf abrufen.

Mit dem Schlüsselwort orderby können Sie die Richtung der Sortierung durch Eingabe von asc (für aufsteigend, was die Standardeinstellung ist) oder absteigend (für absteigend) angeben.

Im folgenden Beispiel ist der Ergebnissatz orderby auf dem Feld VK-Preis. Die Felder, die Sie im Filterausdruck orderby verwenden, müssen nicht Teil des Filterausdrucks select sein.

/Items?$select=No,Description,Unit_Price&$orderby=Unit_Price desc

Den Ergebnissatz beschränken

Verwenden Sie den Filterausdruck $top, um eine bestimmte Anzahl von Datensätzen abzurufen. Dieser Ausdruck kann zusammen mit dem Filterausdruck $skip verwendet werden, um die nächste Anzahl von Datensätzen zu erhalten.

Im folgenden Beispiel werden die ersten zehn Datensätze übersprungen und die nächsten fünf Datensätze zurückgegeben.

/Items?$select=No,Description,Unit_Price&$top=5&$skip=10

Den Ergebnissatz filtern

Sie können die Ergebnismenge filtern, um nur Datensätze abzurufen, bei denen ein oder mehrere Felder den im Filterausdruck $filter angegebenen Bedingungen entsprechen.

Das folgende Beispiel zeigt das Abrufen aller Datensätze, bei denen der Lagerbestand weniger als 3.000 beträgt und die Basismaßeinheit nicht PCS entspricht.

/Items?$filter=Inventory lt 3000 and Base_Unit_of_Measure ne 'PCS'

Sie können mehrere Felder angeben, indem Sie die Schlüsselwörter und und oder verwenden. Verwenden Sie die folgenden Ausdrücke, um eine Bedingung anzugeben:

  • lt – kleiner als

  • gt – größer als

  • eq – gleich

  • ne – nicht gleich

  • le – kleiner als oder gleich

  • ge – größer als oder gleich

  • in – Teil eines Sets

Der Ausdruck Filter kann auch für FlowFilter-Felder verwendet werden. FlowFields, die vom gefilterten FlowFilter abhängen, werden neu berechnet.

Im folgenden Beispiel ist das Feld Location_Filter ein FlowFilter. Dieser FlowFilter wird zur Berechnung des Felds Bestand verwendet, das ein FlowField ist.

/Items?$select=No,Inventory$filter=Location_Filter eq 'GREEN'

Filtern Sie Debitoren mit den Nummern 10000, 20000 oder 30000:

$filter=CustomerNo IN ('10000','20000','30000') 

Positionsdetails erhalten

Für bestimmte Datensätze können Sie zusätzliche Details anfordern. Im folgenden Beispiel werden alle „SalesOrders“ angefordert. In diesem Beispiel möchten Sie jedoch die entsprechenden „SalesLines“ mit derselben Anforderung abrufen. Verwenden Sie zum Ausführen dieser Aufgabe den Filterausdruck $expand. Wenn im EDM-Dokument eine NavigationProperty für Ihre Entität angezeigt wird, können Sie den Filter $expand verwenden.

Das folgende Beispiel zeigt alle entsprechenden „SalesLines“, die angefordert werden.

/SalesOrders?$expand=SalesOrderSalesLines

Sie können die „SalesLines“ auch mithilfe des Filterausdrucks $filter filtern.

/SalesOrders?$expand=SalesOrderSalesLines($filter=No eq '1920-S')