我正在尝试将一组元素与一个值进行比较,有没有办法使用 ncalc 来做到这一点?
例子:
new Expression(ruleExpression.Replace(" [1,2,3] > 1 and 2 < 3 and 2 == 2").Evaluate();
我想要的结果是 FALSE 到 ([1,2,3] > 1 ),因为并非所有元素都遵守规则。
这是一个稍晚一点的答案,但我认为如果其他人偶然发现同样的问题,它仍然值得回答。
如果您不反对从 NCalc 迁移,那么我创建了一个替代表达式评估框架,该框架最初是为匹配 NCalcs 行为而构建的。它称为Expressive,可在GitHub或NuGet上找到。
虽然您还不能直接在表达式中编写数组,但您可以将它们作为变量提供。因此,为了稍微调整您的表达式,您可以提供以下内容并获得您期望的结果:
new Expression("[array] > 1 and 2 < 3 and 2 == 2").Evaluate(new Dictionary<string, object>()
{
["array"] = new int[] {1,2,3}
});