# Querying
OData supports various kinds of query options for querying data. This section will help you go through the common scenarios for these query options.
# $filter
The $filter system query option allows clients to filter a collection of resources that are addressed by a request URL.
The expression specified with $filter is evaluated for each resource in the collection, and only items where the
expression evaluates to true are included in the response.
There are several kinds of basic predicates and built-in functions for $filter, including logical operators and
arithmetic operators. For more detailed information, please refer to the OData protocol (opens new window) document.
The request below uses $filter to get people with FirstName "Scott".
$filter can also be used as a path segment, and used multiple times to sequentially add filter parameters.
# $orderby
The $orderby system query option allows clients to request resources in either ascending order using asc or descending
order using desc. If asc or desc not specified, then the resources will be ordered in ascending order. The request
below orders People on property LastName in descending order.
# $top and $skip
The $top system query option requests the number of items in the queried collection to be included in the result.
The $skip query option requests the number of items in the queried collection that are to be skipped and not included
in the result.
The request below returns the first two people of the People entity set.
The request below returns people starting with the 2nd person of the entity set People
# $count
The $count system query option allows clients to request a count of the matching resources included with the
resources in the response.
The request below returns the total number of people in the collection.
# $expand
The $expand system query option specifies the related resources to be included in line with retrieved resources.
The request below returns people with navigation property Passengers of a Flight
# $select
The $select system query option allows the clients to requests a limited set of properties for each entity or
complex type. The request below returns origin and destination of all flights:
# $search
The $search system query option restricts the result to include only those entities matching the specified search
expression. The definition of what it means to match is dependent upon the implementation. The request below gets all
airports that have 'fo' or 'lh' in their code.
# $index
The value of the $index system query option is the zero-based ordinal position where an
item is to be inserted. This option is supported on entity sets that can be numerically indexed.
The ordinal positions of items within the collection greater than or equal to the inserted position are increased by one. A negative ordinal number indexes from the end of the collection, with -1 representing an insert as the last item in the collection.
# $compute
The $compute system query option allows clients to define computed properties that can be used in a $select or within a
$filter or $orderby expression. $compute uses the same common expression syntax as $filter. Computed properties
appear as dynamic properties in the result. Some entity set drivers may support including computed properties in the
result but without supporting their use in $orderby or $filter statements.
# $any and $all
OData defines two lambda operators any and all that evaluate a Boolean expression on a collection.
They can work on either collection properties or collections of entities.
The request below returns the People that have Pets with property 'Name' ending with 'The Dog'.
# $each
The $each path segment enables actions and odata operations such as deletes and updates to be run on sequences of
entities server-side. To filter the sequence the $filter path segment must be used.
Members of a collection can be updated by submitting a PATCH request to the URL constructed by appending /$each to the
resource path of the collection. The additional path segment expresses that the request body describes an update to
each member of the collection, not an update to the collection itself.
Members of a collection can be deleted by submitting a DELETE request to the URL constructed by appending /$each
to the resource path of the collection. The additional path segment expresses that the collection itself is not
deleted.
DELETE http://localhost/odata/People/$filter(@bar)/$each?@bar=Color eq 'beige-brown'
A bound operation with a single-valued binding parameter can be applied to each member of a collection by appending
the path segment $each to the resource path of the collection, followed by a forward slash and the namespace- or
alias-qualified name of the bound operation.
GET http://localhost/odata/People/$each/SampleModel.MostRecentOrder()
← Requesting Modifying →