OData - 缩短同一字段上多个条件的过滤查询

问题描述 投票:0回答:2

我正在尝试执行相当长的 OData 过滤器来检索满足多个条件的实体集合。

作为一个简单的解决方案,我目前正在做这样的事情:

$filter=(name eq 'A' or name eq 'B' or name eq 'C')  and (address eq 'addr1' or address eq 'addr2')

在示例中,我的目标是 2 个字段:“名称”和“地址”。对于这两个字段,我正在按符合条件的值列表(可能很长)进行过滤。

虽然所提供的查询已经有效,但实际上存在一个限制,即整个 API 调用长度的字符限制(大约 8000 个字符)。如果用例扩展,查询长度很可能会超出字符限制。

我尝试过类似的方法来稍微截断查询:

$filter=(name eq 'A' or 'B' or 'C') ...

它不起作用(语法错误),但我想知道是否有更好的方法来构造查询以便长度可以更短?

rest odata
2个回答
2
投票

您正在寻找

in
操作员

$filter=name in ('A', 'B', 'C')

https://learn.microsoft.com/en-us/odata/webapi/in-operator


0
投票

对于那些找到此页面寻找 Azure 认知搜索的 OData 查询的人,您可以将其打开:

$filter=(id eq '47415390' or id eq '106266659')

进入这个

$filter=search.in(id, '47415390,106266659', ',')

注释

© www.soinside.com 2019 - 2024. All rights reserved.