Power Automate中从对象数组查找对应ID的表达式问题
正确的表达式写法
你需要用filterArray()函数先过滤缓存的List B数组,再用first()获取第一个匹配项的ID,具体表达式如下:
直接使用get_Items输出的情况
first(filterArray(body('get_Items')['value'], equals(item()?['field_1'], 'field_1_value')))?['ID']
存入变量后的情况(假设变量名为var_ListB_Cache)
first(filterArray(variables('var_ListB_Cache'), equals(item()?['field_1'], 'field_1_value')))?['ID']
原表达式不生效的原因
你之前的写法试图通过条件作为数组索引取值,但Power Automate的数组无法直接用布尔条件定位元素,必须通过filterArray()先筛选出符合条件的子数组,再用first()提取唯一匹配项(前提是field_1的值在List B中唯一)。
额外注意事项
- 若
field_1可能存在多个匹配项,需根据业务场景确认是否只需第一个结果,或调整逻辑处理多匹配情况。 - 末尾的
?是可选链操作符,用于在无匹配项时避免流报错,返回null而非抛出异常。 - 确保
field_1_value与List B中field_1的字段值大小写、格式完全一致(SharePoint部分字段区分大小写)。
内容的提问来源于stack exchange,提问作者Jabb
相关产品推荐
相关产品推荐

