我正在尝试使用 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 中可行。
关于arrays - 如何在动态数组中使用 OData 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267081/