Предисловие: Хочу разобраться, в статьях не совсем понятно пишут.
Есть обработчик (scoped handler)
Есть ли разница(преимущество), что использовать при построении/выполнении запросов, AsEnumerable или ToArrayAsync ?
После запроса выполняется дополнительная фильтрация и группировка, но уже на сервере.
С одной стороны, ToArrayAsync выполняет запрос асинхронно и не блокирует поток, но AsEnumerable вроде тоже выполняется не сразу (будут ли блокировки при использовании)...
И будет ли значительный прирост при средней/высокой нагрузке или эти подходы не имеют сильного различия в стандартных кейсах?
ToArrayAsync выполняет запрос асинхронно и не блокирует поток
Это верно.
AsEnumerable вроде тоже выполняется не сразу (будут ли блокировки при использовании)
Вам вернется IEnumerable. Запрос выполнится при получении первого члена перечисления с блокировкой потока. Для многопоточного серверного приложения используйте ToArrayAsync, ToListAsync, ToDictionaryAsync.
AsEnumerable обычно не используется.
Единственное логичное применение AsEnumerable, которое мне известно - адаптация интерфейса к существующим методам. Это может быть необходимо в сценариях с ленивой загрузкой. Но если у вас за IQueryable скрываются запросы к БД, то я бы такого избегал.