odata - 结合$ expand和$ select

时间:2015-02-04 16:44:40

标签: select asp.net-web-api expand odata-v4

在odata v4.0中是否有将$ expand和$ select组合在一起的选项?

  

我有一个场景,我正在尝试获取特定列   productItemChoices和item。以下查询将为您提供所有   productItemChoices中的列。我只需要一列   productItemChoices

odata/Products(08f80b45-68a9-4a9f-a516-556e69e6bd58)?$expand=productItemChoices($expand=item($select=name))

2 个答案:

答案 0 :(得分:31)

经过这么多时间后,我终于得到了答案。我们可以使用select作为分隔符在expand内嵌套;,例如

odata/Products(8)?$expand=choices($select=col1,col2;$expand=item($select=name))

OData v4 $expand documentation中记录了这一点。该文档还列出了其他有用的示例,例如

Categories?$expand=Products($filter=DiscontinuedDate eq null)
Categories?$expand=Products/$count($search=blue)

答案 1 :(得分:1)

在select中,您可以使用entity / attribute选择扩展实体的特定属性:

$select=productItemChoices/columnyouwant

我不确定查询中实体的关系。在深入扩展时,我使用了以下语法(没有括号) - 在下面,我假设Products与productItemChoices有关,productItemChoices有项

$expand=productItemChoices, productItemChoices/item

然后,选择

$select=productItemChoices/productItemChoicesGuid, productItemChoices/item/name

显然,如果关系不同,你需要改变一些