C#的Func vs Expression>
C#中的Func
在C#中,有两种用于表示Lambda表达式的方式:Func
首先,让我们来看一下为什么会出现这个问题。在C#中,存在一个Where方法的重载,它接受一个Expression
那么为什么会有这种设计呢?原因在于Expression
解决这个问题的方法是根据具体的需求选择合适的表示方式。如果只需要对集合进行简单的查询操作,可以使用Func
List
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
如果需要对查询进行进一步的分析和修改,可以使用Expression
Expression
List
var evenNumbers = numbers.AsQueryable().Where(evenExpression);
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
总之,C#中的Func