对数组属性进行 OData 筛选器以返回空数组或数组



我有一个类似于这个的JSON对象:

{
  "customers": [
    {
      "id": 1,
      "name": "bob",
      "orders": [{"id": 1, "customerId": 1, "itemId": 6}]
    },
    {
      "id": 2,
      "name": "jane",
      "orders": [{"id": 2, "customerId": 2, "itemId": 7}]
    }
  ]
}

我想像这样查询它。

...odata/customers?$expand=orders&$filter=orders/any(order: order/itemId eq 6)

。并得到...

{
  "customers": [
    {
      "id": 1,
      "name": "bob",
      "orders": [{"id": 1, "customerId": 1, "itemId": 6}]
    },
    {
      "id": 2,
      "name": "jane",
      "orders": []
    }
  ]
}

但我得到的是...

{
  "customers": [
    {
      "id": 1,
      "name": "bob",
      "orders": [{"id": 1, "customerId": 1, "itemId": 6}]
    }
  ]
}

我想获得所有客户,我只希望过滤器应用于"订单"。

我该怎么做才能得到这个结果?

刚刚遇到了同样的问题!通过在 any(( 中按相同条件过滤我的扩展来解决。

applications?$expand=accounts($filter=idUser eq 5)&$filter=accounts/any(account: account/idUser eq 5)

也许迟到了,但希望它能帮助其他人;)