我有一个textarea,用户可以使用下拉列表(对于运算符,变量等)创建动态公式,如下所示:
basic / workingDays * attendingDays
其中basic
,workingDays
,attendingDays
的值保存在数据库中。我想在运行时期间从数据库映射这些变量。我怎么能这样做。
答案 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();
答案 1 :(得分:1)
您也可以尝试在Expression
中利用DataColumn
的{{1}}属性。