一个USERS 集合包含一个USERGROUPS 导航属性。
用户通过/api/Users?$expand=USERGROUPS
.
USERGROUPS 导航属性包含 ID,我想按 UserGroups.Id 过滤,例如:
/api/Users?$expand=USERGROUPS&$filter=startswith(USERGROUPS/ID,'a')
最终,我希望能够过滤特定的组 ID 值。
谢谢。
实际上,OData V3 支持使用 any/all 运算符。因此,例如,如果您想搜索属于 id 为“a”的用户组的所有用户,则查询将类似于:
/api/Users?$filter=USERGROUPS/any(usergroup: usergroup/ID eq 'a')
但请注意,该功能仅在 OData V3 中受支持,因此您需要在服务器上启用该功能。
-- 已编辑 --
最初,我相信我在这里找到了答案:
OData 不支持对作为集合的导航属性进行筛选
由于在我的数据集中,UserGroups 是一个集合,因此无法对此属性执行过滤器。
但是- 使用上面给出的语法,并使用 OData v3,这非常好!