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

时间:2018-01-15 16:31:45

标签: 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 = language / any(c:c / Lid eq 1)

但是当我尝试使用过滤器时,它会过滤父项而不是孩子 它将所有3个孩子归还给我

1 个答案:

答案 0 :(得分:0)

所以它按预期工作:)

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

要过滤扩展/相关集合(在您的情况下为语言),您必须使用展开过滤器功能:

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

但是:只能在OData v4中使用。

ref for webapi

nested filter description