.ToList () прервет отложенное выполнение, что часто очень полезно (передача запроса может задержать выполнение, но может закончиться выполнением нескольких исполнений позже, если они будут переданы нескольким классам или методам). Как только вы сделаете .AsQueryable (), вы вернете результат как Queryable, что может быть требованием.
РЕДАКТИРОВАТЬ: Если мы можем согласиться с тем, что вызов .ToList () для запрашиваемого, а затем передать список является правильным шаблоном для некоторых применений (я действительно могу ускорить ваше приложение в тех случаях, когда ваши запрашиваемые объекты разбиваются на несколько вариантов, каждый должен быть выполнен в какой-то момент). Если вы прервете отложенное выполнение в какой-то момент, ваши запросы оттуда будут упрощены и быстрее - тогда вызов .AsQueryable () позже будет служить только для подгонки результата к определенному (возможно, необходимому для некоторого API) типу.