现在我有1个textbox里面的值得是从treeview里面拖进来的,下面还有一排+-*/的按钮,举例:
我现在textbox里面的内容是a+b-(c*d)+e  
这种,abcde都是一个datatable里面的列名,我现在要计算出这个等式的值,然后在datatable最后添加一行,这一行是放刚刚算出来的值的我现在应该怎么获得这个等式里面abcde和+-*/呢。。
希望各位大侠提供点思路

解决方案 »

  1.   

    a+b-(c*d)+e 是拖进来的?还是手写的?拖进来可怎么搞好啊。
    手写的话,那就是解析这个字符串了,可以用两个堆来实现,一个存运算符,一个存值(也就是abcde),具体的算法网上应该很多的。
      

  2.   

    新建一个计算列
    或者使用Javascript的Eval
    或者动态代码编译http://www.chenjiliang.com/Article/View.aspx?ArticleID=2767&TypeID=84
    http://blog.csdn.net/wingfay/archive/2007/06/08/1643611.aspx
      

  3.   

    ABCDE是托进来的。+-*/是用按钮添加进去的。
      

  4.   

    string str = "4-3*2";
    int i = Convert.ToInt16(new DataTable().Compute(str, ""));//i=-2;
      

  5.   

    这个是可以,但是我的a,b,c,d,e这种都是datatable的columnname。
      

  6.   

    那就把列名替换成所在列的值,再按照上面的方法计算。只是不明白如果是照你的意思,多行的话你算哪行的值?
    还是说在DataTable中加上一列,每行都按照TextBox中的表达式计算,然后保存结果?
    不管怎样,思路还是一样的。