arrays - 如何在动态数组中使用 OData 过滤器

标签 arrays filter nested odata

我正在尝试使用 odata 过滤器中的 ?$filter 来过滤嵌套数组 但它不能正常工作 父数组被过滤,但子数组未被过滤。

我的数组

{

"value": [
    {
        "Id": 1,
        "Country": "India",
        "language": [
            {
                "Lid": 1,
                "State": "telengana",

                "Statuelanguage": "Telgu",

                "Place to visit": [

                       "p3","p4"


                ]
            },
            {
                "Lid": 2,
                "State": "Delhi",

                "Statuelanguage": "Hindi",

                "Place to visit": [

                       "p5","p6"


                ]
            },
             {
                "Lid": 3,
                "State": "UP",

                "Statuelanguage": "Hindi",

                "Place to visit": [

                       "p7","p8"


                ]
            }
        ]
    }
]

}

预期响应

{

"value": [
    {
        "Id": 1,
        "Country": "India",
        "language": [
            {
                "Lid": 1,
                "State": "telengana",

                "Statuelanguage": "Telgu",

                "Place to visit": [

                       "p3","p4"


                ]
            }
        ]
    }
]

}

过滤查询

?$filter=语言/any(c: c/Lid eq 1)

但是当我尝试使用过滤器时,它正在过滤父级而不是子级 它将所有 3 个 child 归还给我

最佳答案

所以它按预期工作:)

$filter 参数用于过滤您正在查询的集合。

要过滤扩展/相关集合(您案例中的语言),您必须使用扩展过滤器功能:

...$expand=language($filter=Lid eq 1)

但是:这仅在 OData v4 中可行。

ref for webapi

nested filter description

关于arrays - 如何在动态数组中使用 OData 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267081/

相关文章:

arrays - 从字典创建有序数组

exception - AdBlock:如何阻止 example.com 和 example.com/index 但不阻止所有其他 example.com/*

android - 嵌套 fragment 实现

xpath - selenium 查找 child 的子元素

c++ - 在 O(1) 空间限制中反转单词在字符串中的位置而不改变特殊字符的顺序

javascript - 有没有更好的方法递归执行 shuffle 方法而不超过大型数组的最大调用堆栈?

python - Tornado:是否有请求过滤器?

MYSQL LEFT JOIN - 按用户过滤

javascript - 嵌套的 ng-binding 与 angularJS

javascript - 在 JavaScript 中的对象数组中查找数字的快速方法