C# 将带条件的字符串解析为布尔值

C# 将带条件的字符串解析为布尔值,c#,eval,C#,Eval,我正在寻找一种从字符串中获取布尔值的方法 我有一个字符串,存储在数据库中,这是要测试的条件。 假设字符串=“[number]

我正在寻找一种从字符串中获取布尔值的方法

我有一个字符串,存储在数据库中,这是要测试的条件。 假设字符串=“[number]<10000” 在我的代码中,我计划用一个实际的数字替换[number],这样字符串就会变成“100<10000”

是否有一种简单的方法将此字符串求值为布尔值。 在这种情况下,这将是错误的

另一个例子:“[number]>100&&[number]<1000” 如果数字为200,则评估结果为真

如果我向这个条件添加代码,比如“if([number]>100&&[number]<1000){return true;}else{return false;}”


如果有一种简单的方法可以通过代码从该字符串获取返回值?

如果需要更多控制,则必须根据表示逻辑操作的动态字符串创建表达式。例如,我使用了您的第一个案例
“[number],您可以使用类,它在这个包中提供。它可以动态计算表达式

下面是一个例子

var expression = System.Linq.Dynamic.DynamicExpression.ParseLambda(
            new System.Linq.Expressions.ParameterExpression[] { },
            typeof(bool),
            "100 > 1000",
            new object[] { });
        var compiledDelegate = expression.Compile();
        var result = compiledDelegate.DynamicInvoke(null);
结果将为false,因为提供的表达式“100>1000”为false

 string code = "[number] < 10000".Replace("[number]", "100");
    func = ExpressionParser.Compile<Func<bool>>(code);
    bool result = func()
var expression = System.Linq.Dynamic.DynamicExpression.ParseLambda(
            new System.Linq.Expressions.ParameterExpression[] { },
            typeof(bool),
            "100 > 1000",
            new object[] { });
        var compiledDelegate = expression.Compile();
        var result = compiledDelegate.DynamicInvoke(null);