如何在Logic Apps中实现类似.NET Version的版本字符串比较?
在Logic Apps中按.NET Version风格比较版本字符串的最优方案
你需要像.NET的Version类型那样识别主/次版本来比较新旧,不想用拆分字符串的暴力方法,这里有两种更简洁可靠的方案:
方法1:数组链式数值比较(无需额外变量)
不用单独拆分主、次版本变量,直接在条件判断里用一行表达式完成比较:
@greaterOrEquals( createArray(int(split(variables('CurrentImageVer'), '.')[0]), int(split(variables('CurrentImageVer'), '.')[1])), createArray(int(split(variables('TargetImageVer'), '.')[0]), int(split(variables('TargetImageVer'), '.')[1])) )
原理是把版本拆分成主、次版本并转成整数,放到数组里后,Logic Apps会按元素顺序逐一比较数值,完全符合.NET Version的比较逻辑,代码更紧凑,也不用额外定义变量。
方法2:内联C#代码(Standard环境专属)
如果你的Logic Apps是Standard环境,直接复用.NET原生的Version类型来比较是最准确的,还支持带修订版、构建版的复杂版本字符串:
- 添加「内联代码」动作
- 输入以下C#代码:
using System; public static bool Run(string currentVer, string targetVer) { var current = Version.Parse(currentVer); var target = Version.Parse(targetVer); return current.CompareTo(target) >= 0; }
- 传入
currentVer和targetVer两个参数(对应你的两个版本字符串),执行后直接得到「当前版本是否更新或相等」的布尔结果。
暴力拆分方法的不足
你提到的暴力拆分需要单独定义主、次版本变量,代码冗余,而且如果后续版本格式扩展(比如新增修订版),需要修改多处代码,扩展性差。
内容的提问来源于stack exchange,提问作者Tim Lovell-Smith
相关产品推荐
相关产品推荐

