首页 > 解决方案 > OData - 在同一字段上使用多个条件缩短过滤器查询

问题描述

我正在尝试执行相当长的 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') ...

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

标签: restodata

解决方案


您正在寻找in运营商

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

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


推荐阅读