Ну, это зависит.
Вызов Sql Выбор сервера, где 25 раз на один метод не очень хорошая вещь. Каждый внепроцессный вызов требует гораздо больше времени по сравнению с локальным (несмотря на то, что ADO Net кэширует соединение независимо от того, что он делает)
Кеширование 400 строк выглядит не таким уж большим делом, если оно одинаково установлено для каждых 25 звонки. Он достаточно мал, чтобы эффективно обрабатывать запрос C# linq.
Однако как насчет масштабируемости? Сервер Sql может эффективно обрабатывать сотни тысяч строк с использованием индексов, специального кэширования и т. Д. c.
Давайте представим, что база данных увеличивается, и у вас есть 4M строк, которые нужно проверить, чтобы получить одну строку. Я не думаю, что хорошо иметь 4M записи, которые будут прочитаны C# и отфильтрованы локально в памяти.
Таким образом, вы должны проверить данные и код, который написан.
Лучший способ состоит в том, чтобы смешать два подхода в один.
Например, вы можете проверить, почему в одном методе столько вызовов дб. Можно ли уменьшить количество вызовов в БД? Есть ли какой-нибудь способ сделать некоторые соединения или дополнительные вычисления на стороне сервера SQL? На самом деле SQL - это гораздо больше, чем инструмент для хранения плоских таблиц.
Вы можете создать хранимую процедуру (или две, или три) и реализовать некоторые логики c, используя SP для сокращения вызовов в дб. Для уменьшения количества вызовов в БД и одновременного сохранения данных на стороне SQL.