OData - 在同一字段上使用多个条件缩短过滤器查询

OData - shortening filter query with multiple conditions on same field

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

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

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

在示例中,我定位了 2 个字段:'name' 和 'address'。对于这两个字段,我都按(可能很长)符合条件的值列表进行过滤。

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

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

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

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

您正在寻找 in 运算符

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

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