[英]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.