Odata查询过滤列表的第一个元素



我有一个OData查询工作正常,返回我类似:

[
{
"Id": "ABC",
"Related": {
"Id": "123"
},
"Children": [
{
"Id": "1"
},
{
"Id": "2"
}
]
},
{
"Id": "DEF",
"Related": {
"Id": "123"
},
"Children": [
{
"Id": "3"
},
{
"Id": "4"
}
]
}
]

我想过滤每个对象的第一个子对象。我对值或Related(1-1关系)进行过滤没有问题,但我找不到对第一个子(0-N关系)进行过滤的方法。

要过滤1-1实体,我使用相关/Id eq '123'进行过滤,但我找不到类似于Children[0]/Id eq '1'的语法.

任何想法?

谢谢!

在OData v4中,您将在$expand选项中使用$top:

/odata/resources?$expand=Related,Children($top=1)

但是,当您使用$top限制结果时,您应该始终指定排序顺序,本例使用Id降序只是为了您可以看到语法

/odata/resources?$expand=Related,Children($top=1;$orderby=Id desc)

您还可以使用$filter在子目录

中按id获取特定的记录。如果您基于子节点的存在在外部节点上使用了过滤器,那么如果您不想看到其他子节点,您还需要对扩展节点应用相同(或类似)的过滤器表达式:

/odata/resources?$filter=Children/any(x:x/Id eq 4)&$expand=Related,Children($filter=Id eq 4)

相关内容

  • 没有找到相关文章

最新更新