如何在运行时使用datatable.compute? [英] how to use datatable.compute in runtime?

查看:138
本文介绍了如何在运行时使用datatable.compute?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆