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有什么变化吗?
您不需要为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;
}