【问题标题】:using the $filter inside the $expand in the Odata query在 Odata 查询中使用 $expand 中的 $filter
【发布时间】:2018-04-26 21:19:29
【问题描述】:

我正在尝试使用 Odata 查询在扩展实体中使用过滤器,例如

   https://labstest.science.com/DEV/odata/ROOM_REQUEST?$expand=REQ_COLONYROOM($select=Name;$filter=Name eq 'RB05')

这部分有效。它为 Name 不等于 RB05 的 REQ_COLONYROOM 带来所有带有 Null 的 ROOM_REQUEST

{
"@odata.context": "https://labstest.science.com/DEV/odata/$metadata#ROOM_REQUEST(REQ_COLONYROOM(Name))",
"value": [
    {
        "Id": 18399308,
        "Name": "M1",
        "Barcode": "M1",
        "REQ_COLONYROOM": null
    },
    {
        "Id": 18403071,
        "Name": "M2",
        "Barcode": "M2",
        "REQ_COLONYROOM": {
            "@odata.id": "https://labstest.science.com/odata/COLONY_ROOM('MC19')",
            "Name": "RB05"
        }
    },
    {
        "Id": 18403109,
        "Name": "M3",
        "Barcode": "M3",
        "REQ_COLONYROOM": null
    }]}

虽然 M1 和 M3 的 Colony 与 RB05 不同,但它通过 odata 调用返回 Null

【问题讨论】:

  • 您希望在这里返回什么?

标签: asp.net-mvc asp.net-web-api odata


【解决方案1】:

你有没有尝试过这样的事情:

 https://labstest.science.com/DEV/odata/ROOM_REQUEST?$expand=REQ_COLONYROOM&$select=REQ_COLONYROOM/Name&$filter=REQ_COLONYROOM/Name eq 'RB05'

我认为没有 SELECT 就足够了:

 https://labstest.science.com/DEV/odata/ROOM_REQUEST?$expand=REQ_COLONYROOM&$filter=REQ_COLONYROOM/Name eq 'RB05'

【讨论】:

  • 嗨,当我使用与上述类似的东西时,我收到错误响应:odata URL: /GlobalRegions?$expand=Countrys&$select=KeyGlobalRegion,GlobalRegion&$filter=Countrys/KeyCountry eq 'US ' 响应:错误:属性“KeyCountry”的属性访问的父值不是单个值。属性访问只能应用于单个值。就我而言, Countrys /Countrys?$select=KeyCountry,CountryName,KeyGlobalRegion&$filter=KeyCountry eq 'US' 给了我: "value": [ { "KeyCountry": "US", "CountryName": "United States of美国”, “KeyGlobalRegion”: 4 } ]
  • 即使使用 odata 查询,例如:/GlobalRegions?$expand=Countrys&$select=KeyGlobalRegion,GlobalRegion,Countrys/KeyCountry 我得到的响应为错误:找到具有多个导航属性的路径或错误选择子句中的复杂属性路径。请改写您的查询,以便选择或展开的每个级别仅包含 TypeSegments 或 Properties。我在这里做错了什么?它是我试图查询的内部来源。
猜你喜欢
  • 2012-02-28
  • 2015-07-29
  • 2017-02-27
  • 2015-11-29
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
相关资源
最近更新 更多