Odata查询筛选列表的第一个元素

Odata查询筛选列表的第一个元素,odata,Odata,我有一个OData查询工作正常,返回的结果如下: [ { "Id": "ABC", "Related": { "Id": "123" }, "Children": [ {

我有一个OData查询工作正常,返回的结果如下:

    [
        {
            "Id": "ABC",
            "Related": {
                "Id": "123"
            },
            "Children": [
                {
                    "Id": "1"
                },
                {
                    "Id": "2"
                }
            ]
        },
        {
            "Id": "DEF",
            "Related": {
                "Id": "123"
            },
            "Children": [
                {
                    "Id": "3"
                },
                {
                    "Id": "4"
                }
            ]
        }
    ]
我想筛选每个对象的第一个子对象。 我对筛选值或相关(1-1关系)没有问题,但找不到筛选第一个子项(0-N关系)的方法

要对1-1实体进行筛选,我使用相关/Id eq'123'进行筛选,但找不到类似于子[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)

请共享一个示例URL,并用OData协议版本标记此问题。ODataV4中对此有支持,但与以前的版本不同