Возвращение IQueryable<T>
имеет преимущество в том, что выполнение является отложенным до тех пор, пока вы действительно не начнете перечислять результат, и вы сможете скомпоновать запрос с другими запросами и все же получить выполнение на стороне сервера.
Проблема в том, что вы не можете контролировать время жизни контекста базы данных в этом методе - вам нужен открытый контекст и вы должны убедиться, что он остается открытым до тех пор, пока не будет выполнен запрос. И тогда вы должны убедиться, что контекст будет ликвидирован. Если вы возвращаете результат как List<T>
, T[]
или что-то подобное, вы теряете отложенное выполнение и выполнение составленных запросов на стороне сервера, но вы получаете контроль над временем жизни контекста базы данных.
Что подходит лучше всего, конечно, зависит от фактических требований. Это другой вопрос без единой правды.