我不知道有什么好方法
我知道用sql可以做到
 select 要求的表达式 from 任意表
然后把这个值再取出来
这样可以的

解决方案 »

  1.   

    [email protected]假如我有一个自定义类(aa)成员函数integer uf_getaa(string a)
    a+b*(c-a) + aa.uf_getaa(a)也能计算吗
      

  2.   

    integer uf_getaa(string a)
    a+b*(c-a) + aa.uf_getaa(a)在 Pb 中可以计算,不知道在 c# 中可以不
      

  3.   

    using System;
    using System.CodeDom;
    using System.CodeDom.Compiler;
    using Microsoft.CSharp;
    using System.Reflection;
    using System.Text;namespace TestApp
    {
        public class Test
        {
            public static void Main() 
            {
                string expression = "125.8 + 208.2 + 120.90";
                string ret = Eval.Calc(expression).ToString();  
                Console.Write("{0} = {1} ",expression,  ret);
            }
        }    public class Eval 
        {
            public static object Calc(string expression)
            {
                string className = "Calc";
                string methodName = "Run";
                
                // 创建编译器实例。
                ICodeCompiler complier = (new CSharpCodeProvider().CreateCompiler());
                // 设置编译参数。
                CompilerParameters paras = new CompilerParameters();
                paras.GenerateExecutable = false;
                paras.GenerateInMemory = true;            // 创建动态代码。
                StringBuilder classSource = new StringBuilder(); 
                classSource.Append("public class "+ className +"\n");
                classSource.Append("{\n");
                classSource.Append("    public object " + methodName + "()\n");
                classSource.Append("    {\n");
                classSource.Append("        return "+ expression + ";\n");
                classSource.Append("    }\n");
                classSource.Append("}");            System.Diagnostics.Debug.WriteLine(classSource.ToString());            // 编译代码。
                CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());
                
                // 获取编译后的程序集。
                Assembly assembly = result.CompiledAssembly;
     
                // 动态调用方法。
                object eval = assembly.CreateInstance(className);
                MethodInfo method = eval.GetType().GetMethod(methodName);
                return method.Invoke(eval, null);
            }
        }
    }
      

  4.   

    jscript 有 eval 方法,方便多了。
      

  5.   

    参考:
    Runtime C# Expression Evaluator
    http://www.codeproject.com/csharp/runtime_eval.asp