为比较操作构建一个表达式树,并连接值,例如“> = 1”

时间:2018-07-12 13:39:50

标签: asp.net linq expression-trees

下面是一个很好的示例,说明如何在将运算符和值作为SEPERATE参数传递给方法时创建表达式树。

Get list on basis of dropdownlist data in asp.net mvc3

在我的示例中,我有几个下拉框,其中将运算符和值组合在一起,例如“> = 1”,“ <3”等。我可能将其拆分为运算符和值,同时传递到上面的示例,但我想知道是否有一种更简单的方式来编写表达式,使我可以只使用运算符和值作为一个参数,用替代方法替换MakeBinary方法。

我对表达式树还比较陌生,因此有一些指导会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

不。表达式树的级别很低,并且不处理string-> code。它们不是 eval ,它们是在运行时的构建代码(从技术上讲,它们是在运行时的代码的构建描述符,如果需要,可以对其进行编译

使用正则表达式拆分运算符和值(如果它们的形式为"<something")。

var rx = new Regex("([<>]=?|==)(.*)");

string str = "<=1234";

var match = rx.Match(str);
string op = match.Groups[1].Value;
string val = match.Groups[2].Value;