从字符串公式映射变量

本文关键字:映射 变量 字符串 | 更新日期: 2023-09-27 18:09:27

我有一个文本区,用户可以创建一个动态公式使用下拉列表(操作符,变量等),像这样:

basic / workingDays * attendingDays

,其中basic, workingDays, attendingDays的值保存在数据库中。我想在运行时从数据库映射这些变量。

从字符串公式映射变量

NCalc是一个非常强大的框架,您可以尝试一下。它们允许您定义听起来正是您需要的动态参数。你可以这样做:

var e = new Expression("basic / workingDays * attendingDays);
//Set up a custom delegate so NCalc will ask you for a parameter's value
//   when it first comes across a variable
e.EvaluateParameter += delegate(string name, ParameterArgs args)
{
   if (name == "basic")
       args.Result = GetBasicValueFromSomeWhere();
   else if (/* etc. */)
   {
       //....
   }
   //Or if the names match up you might be able to something like:
   args.Result = dataRow[name];
};
var result =  e.Evaluate();

也有一些相关的问题,比如这个和这个,给了一些其他的选择

您也可以尝试在DataTable中利用DataColumnExpression属性。