从字符串公式映射变量

时间:2011-09-21 07:03:23

标签: c# asp.net

我有一个textarea,用户可以使用下拉列表(对于运算符,变量等)创建动态公式,如下所示:

basic / workingDays * attendingDays

其中basicworkingDaysattendingDays的值保存在数据库中。我想在运行时期间从数据库映射这些变量。我怎么能这样做。

2 个答案:

答案 0 :(得分:3)

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();

还有一些相关的问题,例如this onethis one提供了一些其他选项。

答案 1 :(得分:1)

您也可以尝试在Expression中利用DataColumn的{​​{1}}属性。