在Logic Apps中如何从字符串数组传递OData $filter参数?
在Logic Apps中基于数组生成OData $Filter的OR格式参数
看起来你的API可能不支持in操作符(或者权限层面限制了这个用法),那咱们换个思路,用or连接多个eq条件来实现批量匹配。下面是两种具体的实现方式,你可以选顺手的来:
方式一:用Select+Join分步实现(直观易调试)
- 添加Select操作
把你的数组变量variables('myarray')作为Select的输入集合,在映射规则里写这个表达式:concat('(mynumer eq ''', item(), ''')')(这里的两个单引号是Logic Apps里的转义写法,最终会输出一个单引号包裹元素值)。执行后,数组会被转换成类似["(mynumer eq '1122')", "(mynumer eq '1133')"]的格式。 - 添加Join操作
输入选择Select操作的输出结果,分隔符填or(注意前后要有空格)。这一步会把数组里的字符串拼接成:(mynumer eq '1122') or (mynumer eq '1133')。 - 在HTTP连接器中使用拼接结果
打开HTTP连接器的查询参数设置,添加$filter参数,值选择Join操作的输出即可。
方式二:用一行表达式直接生成(更简洁)
如果你不想多加两个操作步骤,可以直接在HTTP的$filter参数里写这个表达式:
join(map(variables('myarray'), concat('(mynumer eq ''', item(), ''')')), ' or ')
这个表达式会直接把数组转换成我们需要的OR条件字符串,逻辑和方式一完全一致,省去了中间的Select和Join操作。
小提示
如果你的数组可能为空,建议加个判断逻辑,比如用if(empty(variables('myarray')), '', 上面的表达式),避免生成无效的$filter参数导致API报错。
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

