Why Func <T, bool> en lugar de Predicate <T>?

Esta es solo una pregunta de curiosidad. Me preguntaba si alguien tenía una buena respuesta para:

En la biblioteca de clases de .NET Framework tenemos, por ejemplo, estos dos 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 qué usanFunc<TSource, bool> en lugar dePredicate<TSource>? Parece que laPredicate<TSource> solo lo utilizaList<T> yArray<T>, mientrasFunc<TSource, bool> es utilizado por casi todosQueryable yEnumerable métodos y métodos de extensión ... ¿qué pasa con eso?

Respuestas a la pregunta(4)

Su respuesta a la pregunta