是否可以在OData导航属性上进行过滤?

时间:2013-08-06 19:35:06

标签: filtering odata

USERS集合包含USERGROUPS导航属性。

通过/api/Users?$expand=USERGROUPS访问用户。

USERGROUPS导航属性包含ID,我想按UserGroups.Id过滤类似的内容:

/api/Users?$expand=USERGROUPS&$filter=startswith(USERGROUPS/ID,'a')

最终,我希望能够过滤特定的组ID值。

感谢。

2 个答案:

答案 0 :(得分:14)

实际上OData V3支持any / all运算符。因此,例如,如果您要搜索属于id为'a'的用户组的所有用户,则查询将类似于:

/api/Users?$filter=USERGROUPS/any(usergroup: usergroup/ID eq 'a')

请注意,该功能仅在OData V3中受支持,因此您需要在服务器上启用该功能。

答案 1 :(得分:0)

- 已编辑 -

最初,我相信我找到了答案here

  

OData不支持对导航属性进行过滤   集合

由于在我的数据集中,UserGroups是一个集合,因此无法对此属性执行过滤。

HOWEVER - 使用上面给出的语法,以及使用OData v3,这非常有效!