Это просто вопрос любопытства. Мне было интересно, есть ли у кого хороший ответ:
В библиотеке классов .NET Framework мы имеем, например, следующие два метода:
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
)
Почему они используют Func<TSource, bool>
вместо Predicate<TSource>
? Похоже, что Predicate<TSource>
используется только List<T>
и Array<T>
, а Func<TSource, bool>
используется почти всеми методами Queryable
и Enumerable
и методами расширения... что с этим?