c# 构建IEnumerable<T>.Contains表达式树
时间: 2024-02-20 10:58:42 浏览: 199
C#表达式树教程
4星 · 用户满意度95%
可以使用Expression类和Lambda表达式来构建IEnumerable<T>.Contains表达式树。
下面是一个示例代码,可以构建一个包含字符串类型的IEnumerable<T>,并使用Contains方法查询其中是否包含指定字符串:
```csharp
// 创建字符串列表
List<string> stringList = new List<string> { "apple", "banana", "orange" };
// 构建表达式树
var parameter = Expression.Parameter(typeof(string), "s");
var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var searchTerm = Expression.Constant("apple", typeof(string));
var containsExpression = Expression.Call(parameter, containsMethod, searchTerm);
var lambda = Expression.Lambda<Func<string, bool>>(containsExpression, parameter);
// 使用表达式树查询
var filteredList = stringList.Where(lambda.Compile());
// 输出结果
foreach (var item in filteredList)
{
Console.WriteLine(item);
}
```
在上面的代码中,我们首先创建了一个字符串列表,然后使用Expression类和Lambda表达式构建了一个包含字符串"apple"的Contains表达式树。最后,我们使用Compile方法将表达式树编译成一个委托,然后将该委托应用于IEnumerable<T>,以过滤出包含指定字符串的元素。
阅读全文