LINQ中的琐碎lambdas

本文关键字:lambdas LINQ | 更新日期: 2023-09-27 18:27:33

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

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

在一个两年前的问题中,Jon Skeet断言身份函数没有减少(参见LINQ身份函数?)。常量表达式也是如此吗?.NET 4.5或C#5有什么变化吗?

LINQ中的琐碎lambdas

您不需要为Count方法指定谓词

.Count()

如果您正在寻找一种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;
}