首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NCALC的IF表达式中处理null

如何在NCALC的IF表达式中处理null
EN

Stack Overflow用户
提问于 2017-01-25 12:41:56
回答 2查看 2.4K关注 0票数 1

我有一个复杂的NCALC if表达式,它是这样的:

代码语言:javascript
复制
if ( {0} == null || {1} == 0 ,{2} * ({3} * {4} + {5}), ({2} * ({3} * {4} + {5}))/{1})

这给我带来了一些意想不到的错误,如下所示:

在第1:6行的“==”处 在第1:37行“UnsetValue”处缺少EOF

这里的问题-我找不到NCALC是否支持null。如果是这样的话,那么上面的表达式会有什么问题呢?帮帮忙!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-25 07:13:58

我的经验是ncalc不支持null。但是您可以编写自己的函数来计算传入的参数是否有值并返回true / false。

要做到这一点,请连接一个EvaluateFinction。{下面的小例子)

代码语言:javascript
复制
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;
    }
}
票数 5
EN

Stack Overflow用户

发布于 2021-09-24 18:00:41

至少在2021年,您可以向NCalc传递允许空值的选项。

代码语言:javascript
复制
Expression e = new Expression(expression, EvaluateOptions.AllowNullParameter);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41851933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档