Odata过滤 - 找到空关系

时间:2016-07-26 15:08:35

标签: filter odata

我有一个多对多的数据库关系。我想用Odata过滤哪些父母没有孩子。

实施例。学生和班级。学生可以有零个,一个或多个班级。寻找特定班级的学生很容易。

?$filter=Classes/any(x: x/Name eq 'Math 101')

多个也很容易

?$filter=Classes/any(x: x/Name eq 'Math 101' or x/Name eq 'English 101')

但我的问题是,如何找到没有课程的学生。以下都不是。

?$filter=Classes/any(x: x/Name eq '')
?$filter=Classes/any(x: x/Name eq null)
?$filter=Classes eq null

我觉得这应该很容易,但是我的google-fu让我失望了。也许有某种Classes.count()我可以比较为零?

提前致谢。

2 个答案:

答案 0 :(得分:2)

你可以在这样的空any前面使用一个不是这样的:

?$filter=not Classes/any(x: true)

以下是TripPin OData示例服务的一个工作示例:

http://services.odata.org/V4/(S(azcw4gs1z4x1ir2e5hrfkukj))/TripPinServiceRW/People?$filter=not%20Trips/any(x: true)

答案 1 :(得分:0)

$filter = Classes/$count eq 0 

如果要解决此问题,您可以跟踪此PR https://github.com/OData/WebApi/pull/738