评估条件表达式

Meh*_*hdi 5 c#

我有一个场景,我将数据库中的"if"条件保存为字符串.例如:

String condition = "(([age] >= 28) && ([nationality] == 'US'))";
Run Code Online (Sandbox Code Playgroud)

要么

String condition = "([age] >= 28)";
Run Code Online (Sandbox Code Playgroud)

现在,我想评估用户输入条件语法正确.这些是不正确语法的示例:

String condition = "(([age] >= 28) && ([nationality] == 'US')"; //Missed ')' bracket

String condition = "[age] >= 28)"; //Missed Opening bracket '('
Run Code Online (Sandbox Code Playgroud)

就像我们在Evaluate Query Expression中一样.可能是表达发辫可能会有所帮助.但是怎么样?在这方面需要帮助.

dav*_*d.s 5

看看NCalc。它是评估数学表达式的框架。

当表达式有语法错误时,求值将抛出EvaluationException。

try
{
    new Expression("(3 + 2").Evaluate();
}
catch(EvaluationException e)
{
    Console.WriteLine("Error catched: " + e.Message);
}
Run Code Online (Sandbox Code Playgroud)

不过,您还可以使用该方法在评估之前检测语法错误HasErrors()

Expression e = new Expression("a + b * (");
if(e.HasErrors())
{
    Console.WriteLine(e.Error);
}
Run Code Online (Sandbox Code Playgroud)