oData v4 (6.1.0) 在 $expand 中嵌套了 $filter

oData v4 (6.1.0) nested $filter in $expand

我有一个 asp.net 4.5 Web Api oData v4 服务,它运行得非常好,但我今天遇到了 $expand 中嵌套 $filters 的问题。

它说 here

that OData V4 supports nested filters in $expand. The request below return People and all their trips with Name "Trip in US".

GET serviceRoot/People?$expand=Trips($filter=Name eq 'Trip in US')

它展示了一个很好的数据示例。

Web API for oData v4 Docs here

中还有编码示例

我有一个这样的 HTTP 调用:

serviceRoot/Languages?$expand=translations

其中 returns 一个带有扩展翻译的语言列表,我可以用这个过滤掉顶级列表:

serviceRoot/Languages?$expand=translations&$filter=isoLanguageShortName eq 'en'

但是,我不能用这个过滤扩展的翻译:

serviceRoot/Languages?$expand=translations($filter=languageName eq 'English')

那个调用似乎与上面引用中的调用相同,对我的数据的影响应该与他们的相同。

有谁知道我错在哪里?我是否需要在我的 ASP.NET 代码中设置一些东西才能工作(比如我们需要将 MaxExpansionDepth 添加到 EnableQueryAttribute 以查询比两层更深的层次)?

这是一个版本控制问题。 5.5 版增加了对的支持。我测试了 sample with v5.5.1,它确实有效。

@lukkea 确认他使用的是 5.4.0。

(标题中表示的版本6.1.0对应于odata core库,它是odata web api库Microsoft.AspNet.OData的依赖项)