30" 我不想自己写,有几个库可以做这样的事情——我试过 FLEE 和 NCalc,但它们似乎要求字符串采用“a-6ren">
gpt4 book ai didi

c# - 解析字符串以生成谓词

转载 作者:行者123 更新时间:2023-11-30 13:58:27 26 4
gpt4 key购买 nike

我需要解析一个字符串并生成一个谓词(或表达式,我不介意),其中字符串采用以下形式:

">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);

关于c# - 解析字符串以生成谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com