2013-05-15 145 views
6

没有人知道如何表达一个嵌套属性的OData $过滤器吗?OData - 通过嵌套属性过滤

for ex。我有以下的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> 

我要筛选具有RegardingObjectId/LogicalName EQ 'new_sportsleague' 的条目。

尝试与'RegardingObjectId/LogicalName'和'RegardingObjectId.LogicalName'没有运气。

回答

10

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

例如:

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

返回两个结果,而

http://services.odata.org/v3/OData/OData.svc/Suppliers $过滤=地址/街EQ 'NE 228次'

回报只是一个?

我在OData规范中没有看到明确规定是否使用复杂值的属性进行筛选是否合法,但似乎WCF数据服务支持它。可能是其他OData实现不这样做。

+0

你是对的...仁看来,Dynamics CRM中2011不支持此类查询。在查询复杂类型时,我得到了$ exception {“不支持在复杂类型EntityReference上引用属性LogicalName”} System.Exception {Microsoft.Crm.CrmNotSupportedException} :-( – Ariel

0

使用以下的OData API例如用过滤数据访问嵌套属性

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