Por que Func <T, bool> em vez de Predicado <T>?
Esta é apenas uma pergunta de curiosidade, eu queria saber se alguém tinha uma boa resposta para:
Na biblioteca de classes .NET Framework, temos, por exemplo, esses dois métodos:
public static IQueryable<TSource> Where<TSource>(
this IQueryable<TSource> source,
Expression<Func<TSource, bool>> predicate
)
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
Por que eles usamFunc<TSource, bool>
ao invés dePredicate<TSource>
? Parece que oPredicate<TSource>
é usado apenas porList<T>
eArray<T>
, enquantoFunc<TSource, bool>
é usado por praticamente todos osQueryable
eEnumerable
métodos e métodos de extensão ... o que há com isso?