使用 OData 查询选项

已完成

OData 允许您使用 OData URI 中的筛选表达式来限制所返回的结果、基于特定字段筛选结果、对结果进行排序等。

您可以为 OData URI 提供特定的查询参数。 所有查询参数都以美元符号 ($) 开头。 要开始指定查询参数,请提供问号 (?) 和不同的查询参数。 查询参数需要使用与号 (&) 进行分隔。

选择一个字段子级

如果您要使用 OData 检索记录,但不需要记录集中定义的所有字段,可使用 $select 筛选表达式。 通过 $select,您可以指定要从记录集中检索的字段。 请务必谨慎使用筛选表达式中的字段,因为这些字段区分大小写。

在以下示例中,选择了物料记录集中的编号说明单价字段。 select 关键字前的美元符号非常重要,如果没有本符号,命令将无法工作。

/Items?$select=No,Description,Unit_Price

对结果集排序

要对结果集排序,您可以使用 $orderby 筛选表达式。 筛选表达式均在服务器级别运行,这将提高您通过 OData 调用检索的结果集的性能。

使用 orderby 关键字时,您可以通过输入 asc(表示升序,这是默认设置)或 desc(表示降序),来指定排序方向。

在以下示例中,基于单价字段对结果集按 orderby 进行排序。 您在 orderby 筛选表达式中使用的字段不需要作为 select 筛选表达式的一部分。

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

对结果集进行限制

要检索特定数量的记录,可使用 $top 筛选表达式。 本表达式可与 $skip 筛选表达式结合使用来获取一定数量的后续记录。

在随后的示例中,将跳过前 10 条记录并返回后面的 5 条记录。

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

筛选结果集

您可以筛选结果集,以仅检索一个或多个字段符合 $filter 筛选表达式中指定的条件的记录。

以下示例检索库存小于 3000 且基础度量单位不为 PCS 的所有记录。

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

您可以使用关键字和关键字指定多个字段。 使用以下表达式指定条件:

  • lt - 小于

  • gt - 大于

  • eq - 等于

  • ne - 不等于

  • le - 小于或等于

  • ge - 大于或等于

filter 表达式也可以用于 FlowFilter 字段中。 依赖于已筛选的 FlowFilter 的 FlowFields 将重新进行计算。

在随后的示例中,Location_Filter 字段为 FlowFilter。 本 FlowFilter 用在 Inventory 字段(即 FlowField)的计算中。

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

获取行明细

对于某些记录集,您可以请求额外的详细信息。 在以下示例中,请求了所有 SalesOrders。 但是,在本示例中,您要检索具有相同请求的对应 SalesLines。 要完成本任务,请使用 $expand 筛选表达式。 如果 EDM 单据显示实体的 NavigationProperty,则您可以使用 $expand 筛选器。

以下示例显示了正在请求的所有对应 SalesLines。

/SalesOrders?$expand=SalesOrderSalesLines

您也可以使用 $filter 筛选表达式对 SalesLines 进行筛选。

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