为什么Linq需要Func <t,bool>而不是Predicate <t>?

时间:2015-07-01 11:55:41

标签: c# .net linq

我一直在调用以下Linq方法:

public static bool Any<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

我想知道为什么Linq不接受完美的System.Predicate<T>代替Func<T,bool>,或者Func

这是故意的Linq风格/设计决定吗?或者我错过了关于Predicateif "Britain" in name or " UK " in name: if not "Ex UK" in name: geofocusregion = "Europe" geofocuscountry = "GB" fundcurrency = "GBP" 的明显内容?

1 个答案:

答案 0 :(得分:0)

  

我想知道为什么Linq不能接受完美的好处   System.Predicate

因为它们在语义上是等价的。没有理由采取两个完全相同的重载。 (IMO)与Func的优点在于它有多个重载需要更多输入类型并返回任何输出类型,而Predicate<T>非常有限。