string a="<";
int a1=1;
int a2=3
int x=2;
//希望 1<2<3 判断
string reslut =a1+a+x+"&&"+x+a+a2;bool b=convert.toboolen(reslut);
结果无法转换 该如何? 
以上变量都是动态获得!!!

解决方案 »

  1.   

    bool b = a1<x && x<a2;
      

  2.   

    你那个当然不行了,toboolen不支持字符串表达式,要不你自己写脚本解析,要么自己写if判断
      

  3.   

    .Net 动态编译功能:
    /// <summary>
    /// 采用动态编译,计算表达式的结果
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button6_Click(object sender, EventArgs e)
    {
        // 声明要计算C#代码,要求必须完整的C#代码
        string strCode = @"
                        using System;
                        namespace ParseEx
                        {
                            public class ParseExC
                            {
                                public static double GetValue()
                                {
                                    return 1+5*8-(Math.Sin(12)*2.5);
                                }
                            }
                        }";    CodeDomProvider comp  = new CSharpCodeProvider();
        CompilerParameters cp = new CompilerParameters();                StringBuilder codeBuilder = new StringBuilder();            
        codeBuilder.AppendLine(strCode);    cp.ReferencedAssemblies.Add("System.dll");
        cp.GenerateExecutable = false;
        cp.GenerateInMemory   = true;
        
        CompilerResults cr = comp.CompileAssemblyFromSource(cp, codeBuilder.ToString());
        if (cr.Errors.HasErrors)
        {
            MessageBox.Show("Error!");
        }
        else
        {
            Assembly a = cr.CompiledAssembly;
            if (a != null)
            {
                Type t = a.GetType("ParseEx.ParseExC");
                if (t != null)
                {
                    // 因为是静态调用,不需要创建实例了
                    // object mode = a.CreateInstance("Mode");
                    MethodInfo mi = t.GetMethod("GetValue", BindingFlags.Static | BindingFlags.Public);
                    if (mi != null)
                    {
                        double d = (double)mi.Invoke(null, null);
                        MessageBox.Show(d.ToString());
                    }
                }
            }
        }
    }
      

  4.   

    string a = "<=";
    int a1 = 1;
    int a2 = 3;
    int x = 2;
    DataTable dt = new DataTable();
    object obj = dt.Compute(string.Format("{0}{1}{2} And {3}{4}{5}", a1, a, x, x, a, a2), string.Empty);
    if (obj != null)
    {
    if (Convert.ToBoolean(obj) == true)
    {
    System.Console.Write("True");
    }
    else
    {
    System.Console.Write("False");
    }
    }