Наверное, действительно просто, поэтому, пожалуйста, извините за мое невежество ...
Насколько мне известно, существует несколько разновидностей метода расширения Where()
:
Queryable.Where<TSource> Method (IQueryable<TSource>, Expression<Func<TSource, Boolean>>)
Enumerable.Where<TSource> Method (IEnumerable<TSource>, Func<TSource, Boolean>)
Оба вышеперечисленных расширения размещены в пространстве имен System.Linq
, так что я могу вообще сделать Where()
, можно надеяться, достаточно доказательств того, что я импортировал правильное пространство имен или есть другое пространство имен, которое мне нужно для расширений IQueryable?
Я понимаю, что IQueryable<T>
наследуется от IEnumerable<T>
, но почему я не могу получить расширения IQueryable<T>
?
class Test
{
IQueryable<Test> SomeMethod(Func<T, bool> criteria)
{
return new List<Test> { new Test() }.AsQueryable().Where(criteria); // compiler error converting IEnumerable<T> to IQueryable<T>
}
}
Как показано выше, должен быть доступным метод расширения, который возвращает IQueryable? Почему он разрешается в IEnumerable Extensions?