如何在运行时使用datatable.compute? [英] how to use datatable.compute in runtime?
问题描述
我有2种类型的代码,使用数据表来评估
a字符串如2 + 3 / 4并返回结果。
我正在寻找一种方法来修改它们,这样我就可以用变量'来评估一个字符串
所以我可以阅读来自用户在运行时的新数据,例如2 + X / 4
,此时X被分配了一些数字。
first代码类型使用datatable.compute:
使用(DataTable eval = new DataTable())
{
// 评估算术表达式
var result = eval.Compute( 1 + 2 * 3/4, null );
// 显示结果
Console.WriteLine(< span class =code-string> 结果:{0}类型:{1},结果,result.GetType()。名称);
}
第二代码:
static double 评估( string 表达式){
var loDataTable = new DataTable();
<跨度类= 代码关键字> VAR 跨度> loDataColumn = <跨度类= 代码关键字>新跨度>的DataColumn(<跨度类= 代码串> Eval, typeof ( double ),表达);
loDataTable.Columns.Add(loDataColumn);
loDataTable.Rows.Add( 0 );
return ( double )(loDataTable.Rows [ 0 ] [ Eval]);
}
对我来说无关紧要使用哪些代码。
我不能使用第三方像Ncalc项目,IT部门犯规答应。
使用您的第一个选项
<预LANG = CS> string X = 4; // 或者您要分配之前的某个数字
string uinput = 1 + 2 * 3 / X; // 或用户输入的内容
string expr = uinput.Replace( X,X); // 变量替换
var result = eval.Compute(expr, null );
Hi,
I have 2 type''s of codes that use datatable in order to evaluate
a string like "2+3/4" and return the result.
I''m looking for a way to modify them so i can evaluate a string
with variable''s so i can read new data from the user in runtime, like "2+X/4"
when X is assigned with some number before.
first code type uses datatable.compute:
using (DataTable eval = new DataTable())
{
//Evaluate the Arithmetic expression
var result = eval.Compute("1+2*3/4", null);
//Displaying the result
Console.WriteLine("Result: {0} of Type: {1}", result, result.GetType().Name);
}
second code:
static double Evaluate(string expression) {
var loDataTable = new DataTable();
var loDataColumn = new DataColumn("Eval", typeof (double), expression);
loDataTable.Columns.Add(loDataColumn);
loDataTable.Rows.Add(0);
return (double) (loDataTable.Rows[0]["Eval"]);
}
doesnt matter to me which code to use.
I cant use third party projects like Ncalc,IT department doesnt allow it.
Using your first option
string X = "4"; // or however you are assigning "some number before" string uinput = "1+2*3/X"; // or whatever the user has input string expr = uinput.Replace("X", X); // Do the variable substitutions var result = eval.Compute(expr, null);
这篇关于如何在运行时使用datatable.compute?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!