如何在没有Lambda表达式的情况下编写Func?

时间:2013-05-22 11:28:30

标签: c# anonymous-function lambda

我正在考虑如何转换这个: List.Where(X=>X>5);到非lambda表达式代码。 我无法弄清楚如何让Func在这里工作。

2 个答案:

答案 0 :(得分:12)

在不使用lambda表达式的情况下创建委托有两种相当简单的可能性:

  • 编写方法并使用方法组转换

    private static bool GreaterThan5(int x)
    {
        return x > 5;
    }
    
    ...
    
    var query = list.Where(GreaterThan5);
    
  • 使用匿名方法

    var query = list.Where(delegate(int x) { return x > 5; });
    

但这些都不如使用lambda表达式那样明确。对于您实际想要捕获局部变量的更复杂的示例,“编写单独的方法”版本会变得更复杂。

答案 1 :(得分:3)

虽然我不明白这个的目的,你可以这样做:

bool MyFilterFunction(int x)
{
    return x > 5;
}

然后重写你的代码:

List.Where(MyFilterFunction);