OData - 查询Collection中的元素

时间:2014-05-13 16:31:49

标签: odata

我创建了一个暴露OData协议V1(最大V2)数据的OData服务器

<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0" m:MaxDataServiceVersion="2.0">

是否可以通过查找集合中的特定值来执行OData查询? 我有这种情况作为例子:

...
<entry>
  ...
  <d:Id>1</Id>
  <d:Attributes m:type="Collection(Edm.String)">
    <m:item>A</m:item>
    <m:item>B</m:item>
  </d:Attributes>
</entry>
<entry>
  ...
  <d:Id>2</Id>
  <d:Attributes m:type="Collection(Edm.String)">
    <m:item>A</m:item>
    <m:item>C</m:item>
  </d:Attributes>
</entry>
<entry>
  ...
  <d:Id>3</Id>
  <d:Attributes m:type="Collection(Edm.String)">
    <m:item>E</m:item>
    <m:item>D</m:item>
    <m:item>F</m:item>
    <m:item>H</m:item>
  </d:Attributes>
</entry>
...

我想展示一下,例如,只显示包含项<m:item>A</m:item>的条目。我该如何构建查询? 类似于...?$filter=substringof(A,Attributes)

谢谢!

1 个答案:

答案 0 :(得分:3)

使用$ filter = Attributes / any(d:d eq'A')

例如:

http://odatasampleservices.azurewebsites.net/Experimental/DefaultService/People?$filter=Numbers/any(d:d eq '012')

相关协议:Here