Trabalhar com opções de consulta OData
O OData permite usar expressões de filtro no URI do OData para limitar os resultados devolvidos, filtrar os resultados em um campo específico, classificar os resultados e assim por diante.
É possível fornecer parâmetros de consulta específicos ao URI do OData. Todos os parâmetros de consulta começam com um cifrão ($). Para começar a especificar parâmetros de consulta, forneça um ponto de interrogação (?) e os diferentes parâmetros de consulta. Os parâmetros de consulta precisam ser separados por um e comercial (&).
Selecionar um subconjunto de campos
Se você deseja recuperar registros usando OData, mas não precisa de todos os campos definidos em um conjunto de registros, use a expressão de filtro $select. Com $Select, você pode especificar os campos que deseja recuperar do conjunto de registros. Tenha cuidado ao usar campos em uma expressão de filtro, pois diferenciam maiúsculas de minúsculas.
No exemplo a seguir, os campos No., Descrição e Preço unitário são selecionados no conjunto de registros do item. O campo de log na frente da palavra-chave selecionar é importante; sem ele, o comando não funcionará.
/Items?$select=No,Description,Unit_Price
Ordenar o conjunto de resultados
Para solicitar o conjunto de resultados, você pode usar a expressão de filtro $OrderBy. Todas as expressões de filtro são executadas no nível do servidor, o que melhorará o desempenho do conjunto de resultados que você recupera com uma chamada OData.
Com a palavra-chave OrderBy, você pode especificar a direção da classificação inserindo asc (para crescente, que é o padrão) ou desc (para decrescente).
No exemplo a seguir, o conjunto de resultados é OrderBy no campo preço unitário. Os campos que você usa na expressão de filtro OrderBy não precisam fazer parte da expressão de filtro SELECT.
/Items?$select=No,Description,Unit_Price&$orderby=Unit_Price desc
Limitar o conjunto de resultados
Para recuperar um número específico de registros, use a expressão de filtro $Top. Essa expressão pode ser usada junto com a expressão de filtro $Skip para obter o próximo número de registros.
No exemplo, os 10 primeiros registros são ignorados e os próximos cinco registros são retornados.
/Items?$select=No,Description,Unit_Price&$top=5&$skip=10
Filtre o conjunto de resultados
Você pode filtrar o conjunto de resultados para recuperar somente os registros nos quais um ou mais campos estão em conformidade com as condições especificadas na expressão de filtro $Filter.
O exemplo a seguir a recuperação de todos os registros em que o estoque é menor que 3000 e a unidade de medida base não é igual a PCS.
/Items?$filter=Inventory lt 3000 and Base_Unit_of_Measure ne 'PCS'
Você pode especificar vários campos usando a palavra-chave e e a palavra-chave ou. Use as expressões a seguir para especificar uma condição:
lt - menor que
gt - maior que
eq - igual
ne - diferente
le - menor ou igual a
ge - maior ou igual a
in - parte de um conjunto
A expressão de filtro também pode ser usada em campos FlowFilter. FlowFields que dependem do FlowFilter filtrado serão recalculados.
No exemplo, o campo Location_Filter é um FlowFilter. Esse FlowFilter é usado no cálculo do campo estoque, que é um FlowField.
/Items?$select=No,Inventory$filter=Location_Filter eq 'GREEN'
Filtrar clientes com números 10000, 20000 ou 30000:
$filter=CustomerNo IN ('10000','20000','30000')
Obter detalhes da linha
Para determinados conjuntos de registros, você pode solicitar detalhes adicionais. No exemplo a seguir, todas as SalesOrders são solicitadas. No entanto, neste exemplo, você deseja recuperar a SalesLines correspondente com a mesma solicitação. Para concluir essa tarefa, use a expressão de filtro $Expand. Se o documento EDM exibir uma NavigationProperty para a sua entidade, você poderá usar o filtro $Expand.
O exemplo a seguir mostra todos as SalesLines correspondentes que estão sendo solicitadas.
/SalesOrders?$expand=SalesOrderSalesLines
Você também pode filtrar o SalesLines usando a expressão de filtro $Filter.
/SalesOrders?$expand=SalesOrderSalesLines($filter=No eq '1920-S')