OData - 按嵌套属性过滤

时间:2013-05-15 16:49:55

标签: odata

有没有人知道如何针对嵌套属性表达OData $过滤器?

代表。我有以下Atom条目,

<entry>
...
 <m:properties>
...
  <d:RegardingObjectId m:type="Microsoft.Crm.Sdk.Data.Services.EntityReference">
  <d:Id m:type="Edm.Guid">3f3712fd-fc49-e211-8eb8-000c296272c8</d:Id> 
  <d:LogicalName>new_sportsleague</d:LogicalName> 
  <d:Name>Boca</d:Name> 
  </d:RegardingObjectId>

我想过滤那些具有AboutObjectId / LogicalName eq'new_sportsleague'的条目。

尝试使用'ConcerObjectId / LogicalName'和'ConcerObjectId.LogicalName'而没有运气。

2 个答案:

答案 0 :(得分:16)

'RegardingObjectId/LogicalName'将是正确的语法。

例如:

http://services.odata.org/v3/OData/OData.svc/Suppliers

返回两个结果,而

http://services.odata.org/v3/OData/OData.svc/Suppliers?$ filter = Address / Street eq&#39; NE 228th&#39;

只返回一个。

我没有在OData规范中看到一个地方明确说明使用复杂值的属性进行过滤是否合法,但似乎WCF数据服务支持它。可能是其他OData实现没有。

答案 1 :(得分:3)

使用以下odata API示例访问具有过滤器数据的嵌套属性

http://192.168.50.152:50086/odata/StationOperationLogs/?$expand=ProductionStation,ProductionStation/ProductionUnit&$filter=ProductionStation/ProductionUnit/Id eq 2