odata-组合$expand和$select

odata-组合$expand和$select,select,asp.net-web-api,odata,expand,Select,Asp.net Web Api,Odata,Expand,在odata v4.0中,是否有将$expand和$select组合在一起的选项 我有一个场景,在这个场景中,我试图获得特定的列 productItemChoices和item。下面的查询将为您提供所有 productItemChoices中的列。我只需要一个专栏 productItemChoices 在选择中,可以使用实体/属性选择扩展实体的特定属性: $select=productItemChoices/columnyouwant 我不确定查询中实体之间的关系。在深入展开时,我使用了以下语

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

我有一个场景,在这个场景中,我试图获得特定的列 productItemChoices和item。下面的查询将为您提供所有 productItemChoices中的列。我只需要一个专栏 productItemChoices


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

$select=productItemChoices/columnyouwant
我不确定查询中实体之间的关系。在深入展开时,我使用了以下语法(不带括号)-在下面,我假设产品与productItemChoices相关,productItemChoices具有item

$expand=productItemChoices, productItemChoices/item
然后,选择

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

显然,如果关系不同,你需要改变一些。在花了很多时间之后,我终于得到了答案。我们可以使用
中嵌套
选择
展开
作为分隔符,类似于

odata/Products(8)?$expand=choices($select=col1,col2;$expand=item($select=name))
这在中有记录。文档还列出了其他有用的示例,例如

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

我尝试了这个odata/Products(08f80b45-68a9-4a9f-a516-556e69e6bd58)?$expand=productItemChoices($expand=item)和$select=productItemChoices/productItemChoicesGuid,它给我一个错误,说{“error”:{“code”:“message”:“URI中指定的查询无效。在select子句中找到了具有多个导航属性的路径。请重新编写查询,使select或expand的每一级仅包含TypeSegments或属性。”}用一些更详细的信息编辑了答案我在这里谈论的是odata v4…您给出的查询可能对V3有效我也在使用v4。我的v4服务是ASP.NET Web API 2.2 odata。您知道您的端点背后是什么技术吗?另外,我建议的是在querystring-我以前没有见过用于$expand/$select的嵌套圆括号。这对我使用SharePoint Online OData服务很有效。很有效!有关于此的源文档吗?确实有效。这很有趣,因为我的文档(asp.NET WebAPI)说这样的话应该行得通:odata/Categories?$expand=Products&$select=Name,Products/Name。这可能是odata v3和v4之间的区别吗?这确实是v3和v4之间的区别,就像rama在上发现的那样,并使用了&而不是;的确如此。@Jerther查看此源代码以供参考。非常有效,谢谢!
Categories?$expand=Products($filter=DiscontinuedDate eq null)
Categories?$expand=Products/$count($search=blue)