检测Dynamics过滤查询空响应并返回布尔值的问题排查
解决Dynamics查询空响应的判断问题
我来帮你搞定这个判断问题!你当前的表达式之所以不管用,核心原因是空响应里的value是空数组[],而不是null——你拿它和@null做相等判断,结果永远是false,再套个not就一直返回true,自然不管有没有数据都触发操作了。
下面给你两种靠谱的解决方案,完全符合你的需求:
方法1:检查数组长度(最稳妥)
直接判断value数组的长度是否为0,这是最直观且不易出错的方式:
"expression": { "equals": [ "@length(body('List_records')?['value'])", 0 ] }
当value是空数组时,这个表达式返回true(触发你要执行的操作);当有数据返回时,数组长度大于0,返回false(不执行操作),完美匹配你的需求。
方法2:直接对比空数组
如果你更倾向于直接对比数组内容,也可以直接和空数组字面量做相等判断:
"expression": { "equals": [ "@body('List_records')?['value']", [] ] }
Dynamics的List Records响应中value字段始终是数组类型,所以这种方式也能准确识别空响应的场景。
再复盘下你原来的问题
你之前写的表达式:
"expression": { "and": [ { "not": { "equals": [ "@body('List_records')?['value']", "@null" ] } } ] }
不管value是空数组还是有数据的数组,它都不等于null,所以equals返回false,not反转后就一直是true——这就是为什么不管有没有数据,判断结果都一样的原因。
内容的提问来源于stack exchange,提问作者Zak
相关产品推荐
相关产品推荐

