【问题标题】:OData query to filter objects based on multiple Ids基于多个 Id 过滤对象的 OData 查询
【发布时间】:2021-05-26 12:45:24
【问题描述】:

考虑如下没有任何过滤器的 api 响应,

[
        {
            "Account": {
                "AccountID": "1",
                "Name": "Acc1"

            }
        },      
        {
            "Account": {
                "AccountID": "2",
                "Name": "Acc2"

            }
        },              
        {
            "Account": {
                "AccountID": "3",
                "Name": "Acc3"

            }
        },
        {
            "Account": {
                "AccountID": "4",
                "Name": "Acc4"

            }
        }
        ...
        ...
]       

当我有 帐户 ID 数组时,我正在使用 odata 查询来过滤帐户,如下所示。

.......apiurl?$filter=Account/AccountID eq '1' OR Account/AccountID eq  '2' OR Account/AccountID eq '3'

这似乎有效。但是当 account ids 数组有更多的值时,uqi 查询长度会增加。

是否有任何其他选项可以仅在 uri 中使用该字段一次 Account/AccountID 来检查 Id 数组。

提前致谢。

【问题讨论】:

标签: filter postman odata asp.net-core-webapi


【解决方案1】:

当您尝试过滤相同属性但值不同时,最好使用in

在你的情况下,这看起来像

.......apiurl?$filter=Account/AccountID in ('1', '2', '3')

请注意对数据库的查询。 如果您有类似WHERE AccountId = '1' OR AccountId = '2' 的查询,可以在服务器端将它们切换到WHERE AccountId IN ('1', '2') - 只是建议优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多