我的经验一直是ncalc不支持null。但是您可以编写自己的函数来评估传入的参数是否有值并返回真/假。
为此,请连接 EvaluateFinction。{下面的小例子)
var exp = new NCalc.Expression("if(HASVALUE([variable], [variable] *2, 0)")
exp.Parameters["variable"] = 2;
exp.EvaluateFunction += SpecRule_EvaluateFunction;
private void SpecRule_EvaluateFunction(string name, NCalc.FunctionArgs args)
{
switch (name.ToUpper())
{
case "HASVALUE":
if (args.Parameters.Length < 1)
throw new ArgumentException("IsNull must have at least 1 argument");
args.Result = args.Parameters[0].Parameters.Values.FirstOrDefault() != null;
break;
}
}