我使用OData V4和ASP WebApi。我会过滤扩展的集合,因为OData的新版本可以做(http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html - 示例90),但在我的情况下,过滤器选项没有效果。
我还尝试使用Nortwhind服务和TripPin服务做同样的事情。它适用于TriPin服务,但不适用于Northwind服务。
这里,我使用过的请求:
我的服务: api / odata / Customers(19037)?$ expand = orders($ filter = id + eq + 1796) - > 不能工作
Northwind服务: http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$ expand =订单($ filter =订单ID + eq + 10643) - > 不能工作
TripPin服务: http://services.odata.org/V4/TripPinServiceRW/People?$ expand = Trips($ filter = TripId + eq + 1001) - > 工作
感谢您的帮助。
答案 0 :(得分:1)
我重现了这个问题,发现$ expand内的$ select效果很好。我认为这是一个缺陷并为它打开了一个错误:https://aspnetwebstack.codeplex.com/workitem/2070。
答案 1 :(得分:1)
这是我们现在不支持的功能。
根本原因是在翻译$ expand时会忽略内联$ filter。
检查SelectExpandBinder.cs的方法“GetPropertiesToExpandInQuery”:
仅返回expandItem.SelectAndExpand
,而忽略其他选项。
所以现在只有$ select和$ expand扩展内部工作。
我之前曾调查过如何修复它,但由于该问题尚未获得批准, 请投票金福开放的问题,以吸引领导团队的更多关注。