在ADF的If块中如何正确评估三个字符串为'True'的条件?
如何正确判断三个字符串是否均为'True'以触发If分支
我需要实现一个逻辑:当三个活动A、B、C**全部返回字符串'True'**时,执行If块的True分支,否则执行False分支。
- 场景1(全为'True'):A='True'、B='True'、C='True' → 执行True分支
- 场景2(至少一个非'True'):任意一个活动返回非'True'值 → 执行False分支
我尝试了以下表达式但触发错误:
@and( equals('True', 'True'), # True = True, 返回True and( equals('True', 'True'), # True = True, 返回True equals('True', 'True') # True = True, 返回True ) # True & True, 返回True # True & True, 预期返回True )
错误信息:
The function 'bool' was invoked with a parameter that is not valid. The value cannot be converted to the target type
我还尝试了另一种嵌套方式,仍报相同错误:
@and( and( equals('True', 'True'), true ), and( equals('True', 'True'), equals('True', 'True') ) )
问题原因
Azure逻辑应用的and()函数仅支持传入2个布尔类型的参数,你之前的写法虽然看似嵌套,但语法结构有误,导致参数无法被正确识别为布尔值,触发类型转换错误。
正确表达式
要判断三个条件同时成立,需正确嵌套and()函数,确保每个and()仅接收两个布尔参数:
@and( and(equals(A, 'True'), equals(B, 'True')), equals(C, 'True') )
更易读的拆分写法:
@and( and( equals(A, 'True'), equals(B, 'True') ), equals(C, 'True') )
场景验证
- 场景1:当A、B、C均为'True'时,每个
equals返回True,内层and输出True,外层and结合两个True最终返回True,触发True分支。 - 场景2:只要任意一个活动返回非'True'值,对应
equals返回False,整个and链会输出False,触发False分支。
额外提示
注意将表达式中的A、B、C替换为实际活动的输出引用,比如活动A的输出引用为body('Activity_A'),确保取到的是活动返回的字符串值。
内容的提问来源于stack exchange,提问作者Oscar Dyremyhr
相关产品推荐
相关产品推荐

