0

我正在尝试将一组元素与一个值进行比较,有没有办法使用 ncalc 来做到这一点?

例子:

new Expression(ruleExpression.Replace(" [1,2,3] > 1 and 2 < 3 and 2 == 2").Evaluate(); 

我想要的结果是 FALSE 到 ([1,2,3] > 1 ),因为并非所有元素都遵守规则。

4

1 回答 1

0

这是一个稍晚一点的答案,但我认为如果其他人偶然发现同样的问题,它仍然值得回答。

如果您不反对从 NCalc 迁移,那么我创建了一个替代表达式评估框架,该框架最初是为匹配 NCalcs 行为而构建的。它称为Expressive,可在GitHubNuGet上找到。

虽然您还不能直接在表达式中编写数组,但您可以将它们作为变量提供。因此,为了稍微调整您的表达式,您可以提供以下内容并获得您期望的结果:

new Expression("[array] > 1 and 2 < 3 and 2 == 2").Evaluate(new Dictionary<string, object>()
{
    ["array"] = new int[] {1,2,3}
});
于 2019-02-25T20:27:47.667 回答