簡體   English   中英

解析字符串以產生謂詞

[英]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://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM