LINQ中的琐碎lambda

时间:2012-03-13 13:47:58

标签: c# linq lambda

编辑:尽管有赞成票,但我认为这不再是一个好问题了(请参阅各种评论)。很抱歉浪费了空间,但不幸的是我缺少删除自己帖子的代表。

有没有更好的方法来创建一个lambda(或者一个不是lambda的谓词或表达式),它返回1)唯一的参数不变或2)一个常量值?我在使用LINQ时遇到这种情况,其中基本的LINQ扩展方法需要Func<x,y>,但我只需要输入参数或常量。

在一个两年前的问题中,Jon Skeet声称identity function没有减少(见LINQ identity function?)。恒定表达式也是如此吗?是否(或将会)使用.NET 4.5或C#5进行任何更改(编辑)?

2 个答案:

答案 0 :(得分:7)

您无需为Count方法

指定谓词
.Count()

答案 1 :(得分:2)

如果你正在寻找一种lambda常数,常规方法将是最接近的候选者。我们假设需要Func<string,bool>,并且您希望它在任何情况下都返回true。您可以使用适当的方法

创建静态类,而不是编写collection.SomeLinqMethod(s => true)
public static class Expressions
{
    public static bool True(string s)
    {
        return true;
    }
}

然后你会写

var result = collection.SomeLinqMethod(Expressions.True);

您也可以使用通用方法

public static bool True<T>(T item)
{
    return true;
}