This question already has answers here:
operators as strings
                                
                                    (13个回答)
                                
                        
                                6年前关闭。
            
                    
我有一个文本区域,用户可以使用下拉列表(用于运算符,变量等)创建动态公式,如下所示:

basic / workingDays * attendingDays


basicworkingDaysattendingDays的值保存在数据库中。我想在运行时从数据库映射这些变量。我怎样才能做到这一点。

最佳答案

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给出了其他一些选择。

关于c# - 从字符串公式映射变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7495790/

10-16 09:07
查看更多