AsQueryable на самом деле ничего не делает, когда вызывается из простой старой коллекции, такой как List<T>
, поэтому ответ, вероятно, зависит от другой части кодовой базы. Например, кто-то, возможно, определил метод GetBooks для принятия IQueryable<Book>
с намерением, чтобы метод GetBooks выполнял любое упорядочивание или фильтрацию в базе данных через поставщика LINQ. Но код, который вы просматриваете, создает набор книг как коллекцию (List<Book>
), а не как запрос. Чтобы результат был передан гипотетическому методу GetBooks, коллекция должна быть обернута в IQueryable<Book>
, даже если эта оболочка просто делегирует обратно методам LINQ to Objects (а не переводит операции GetBooks в SQL-запросы).
Или, возможно, класс, к которому вы обращаетесь, реализует интерфейс, в котором метод, к которому вы обращаетесь, объявлен как возвращающий IQueryable<Book>
(по тем же причинам, что и выше), поэтому ваш код должен обернуть List<Book>
в оставаться совместимым с подписью интерфейса.