编辑:尽管有赞成票,但我认为这不再是一个好问题了(请参阅各种评论)。很抱歉浪费了空间,但不幸的是我缺少删除自己帖子的代表。
有没有更好的方法来创建一个lambda(或者一个不是lambda的谓词或表达式),它返回1)唯一的参数不变或2)一个常量值?我在使用LINQ时遇到这种情况,其中基本的LINQ扩展方法需要Func<x,y>
,但我只需要输入参数或常量。
在一个两年前的问题中,Jon Skeet声称identity function没有减少(见LINQ identity function?)。恒定表达式也是如此吗?是否(或将会)使用.NET 4.5或C#5进行任何更改(编辑)?
答案 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;
}