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

标签 c# asp.net asp.net-web-api odata

我有一个运行良好的 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

它返回一个语言列表及其扩展翻译,我可以用这个过滤掉顶级列表:

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

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

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

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

有谁知道我错在哪里?我是否需要在我的 ASP.NET 代码中设置一些东西才能使它起作用(比如我们需要将 MaxExpansionDepth 添加到 EnableQueryAttribute 以查询超过两个级别的深度)?

最佳答案

这是一个版本问题。 5.5 版增加了对的支持。我测试了 samplev5.5.1它确实有效。

@lukkea 确认他使用的是 5.4.0。

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

关于c# - oData v4 (6.1.0) 在 $expand 中嵌套了 $filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290038/

相关文章:

c# - WebApi Get 请求绑定(bind)到复杂类型

c# - 使用两个条件创建 xpath

c# - asp.net 部署 - 找不到 Main.Master.cs 文件

c# - 具有依赖属性崩溃的 wpf 自定义文本框

c# - 执行后端代码asp.net时旋转轮子

c# - asp.net 从代码隐藏页面插入 HTML

c# - 自终止 自托管 WebAPI

asp.net-mvc-4 - MVC 4 Web API 中的默认参数值

c# - .NET Regex 等效于 Python Regex (?P=previousmatchname)

c# - DocumentFormat.OpenXml.Packaging 添加为引用