OData V4包含和任何

Raf*_*aeu 3 odata asp.net-web-api2

我们有一个OData V4端点,具有以下结构.我们正在使用Entity Framework 6.1,OData V4和Web Api 2.2

http://api.com/odata/Companies
Run Code Online (Sandbox Code Playgroud)

如果我们想要获得地址,我们就像这样扩展

http://api.com/odata/Companies?$expand=Addresses
Run Code Online (Sandbox Code Playgroud)

如果我按城市过滤它很好

http://api.com/odata/Companies?$filter=Addresses/any(a:a/City eq 'New York')
Run Code Online (Sandbox Code Playgroud)

但是我们不能将Contains应用于过滤器.使用City属性实现Contains的正确语法是什么?

Yi *_*SFT 9

正确语法的一部分是使内置查询选项"contains()"的字母全部为小写,以防您未能将其应用于过滤器的原因是外壳不正确.

作为整个语法的示例,您可以查看TripPin示例服务的以下查询:

http://services.odata.org/v4/TripPinServiceRW/People?$filter=Trips/any(a:contains(a/Name,'US'))&$expand=Trips
Run Code Online (Sandbox Code Playgroud)

  • @Raffaeu具体来说,对于"contains()"的语法,您可以在OData V4协议的第11.2.5.1.2节中找到它:http://docs.oasis-open.org/odata/odata/v4.0/ OS/part1的协议/ OData兼容V4.0-OS-part1的-protocol.html#_Toc372793694.对于任何与URL相关的约定,可以参考以下文档:http://docs.oasis-open.org/odata/odata/v4.0/os/part2-url-conventions/odata-v4.0-os-part2 -url-conventions.html#_Toc372793815.对于更高级的方案,您可以查找ABNF文档:http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/. (2认同)