C#中如何将这样的字符串转换为一个实际执行的判断?
时间: 2024-11-03 20:20:44 浏览: 10
C#找出字符串中第一个字母并大写的方法
在C#中,将字符串转换为实际执行的判断通常涉及到解析和构建Lambda表达式。对于 "800 >= y AND y >= 90" 这样的逻辑,可以按照以下步骤操作:
1. 首先,你需要从字符串中提取比较运算符和数值,并将其转换成相应的 `Expression` 对象。你可以用正则表达式来分割字符串,然后分别处理每个部分。
```csharp
var pattern = @"\d+>=\s*y\s*AND\s*y>=\s*\d+";
Match match = Regex.Match(expressionText, pattern);
int min1 = int.Parse(match.Groups[1].Value);
int max1 = int.Parse(match.Groups[3].Value);
int min2 = int.Parse(match.Groups[5].Value);
```
2. 接着,创建 `ParameterExpression` 表示变量 `y`,以及对应的 `ComparisonExpression` 表达式:
```csharp
ParameterExpression y = Expression.Parameter(typeof(int), "y");
Expression greaterThanFirst = Expression.GreaterThanOrEqualTo(Expression.Constant(min1), y);
Expression greaterThanSecond = Expression.GreaterThanOrEqualTo(y, Expression.Constant(max2));
Expression condition = Expression.AndAlso(greaterThanFirst, greaterThanSecond);
```
3. 最后,用 `LambdaExpression` 来封装整个条件,使其成为一个可以直接使用的委托(Func<int, bool>):
```csharp
Func<int, bool> lambda = Expression.Lambda<Func<int, bool>>(condition, y).Compile();
```
现在,你可以用 `lambda` 对某个值进行测试,看是否满足条件。
阅读全文