[英]Parse string to produce predicate
我需要解析一个字符串并生成一个谓词(或表达式,我不打扰),其中字符串采用以下形式:
“> 30”
我宁愿不写我自己的,有一些库做这样的东西 - 我试过FLEE和NCalc,但他们似乎要求字符串采用“a> 30”的形式,并提供'a'的值作为一个参数。
有没有一个图书馆可以让我写一些类似的东西
Func<int, bool> predicate = parser.Parse("> 30");
bool a = predicate(10); // false
bool b = predicate(40); // true
我需要像<,>,=等运算符,并支持OR和AND。 这不仅仅是我正在使用的数字,字符串和枚举也在混合中。
您可以考虑使用ScottGu博客中的动态Linq库。
http://msdn.microsoft.com/en-US/vstudio/bb894665.aspx
如果应该让你做以下的事情。
const string exp = "variable > 30";
var p = Expression.Parameter(typeof(int), "variable");
var e = DynamicExpression.ParseLambda(new[] { p }, null, exp);
bool a = (bool)e.Compile().DynamicInvoke(20);
bool b = (bool)e.Compile().DynamicInvoke(40);
要么
Func<int, bool> predicate = (Func<int, bool>)e.Compile();
bool a = predicate(20);
bool b = predicate(40);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.