下面是一个很好的示例,说明如何在将运算符和值作为SEPERATE参数传递给方法时创建表达式树。
Get list on basis of dropdownlist data in asp.net mvc3
在我的示例中,我有几个下拉框,其中将运算符和值组合在一起,例如“> = 1”,“ <3”等。我可能将其拆分为运算符和值,同时传递到上面的示例,但我想知道是否有一种更简单的方式来编写表达式,使我可以只使用运算符和值作为一个参数,用替代方法替换MakeBinary方法。
我对表达式树还比较陌生,因此有一些指导会有所帮助。谢谢。
答案 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;