Во-первых, в зависимости от используемой базы данных, он может кэшировать планы выполнения и результаты как для хранимых процедур, так и для специальных запросов. Это должно быть основной причиной, по которой нужно идти в коде против хранимой процедуры. Вы также можете использовать функцию .net внутри sql, чтобы сохранить часть условия в виде кода .net (слишком сложно написать условие в виде sql и т. Д.)
Тогда вместо того, чтобы нажимать на db слишком часто, я бы попытался кэшировать результаты.
Не является грехом иметь в приложении как хранимые процедуры (в основном для сложных запросов, где SP создаст значительное улучшение), так и специальный код с помощью iqueriable.
Использование средства профилирования SQL также может помочь вам выбрать лучшее решение.
И до тех пор, пока у вас нет перехода на другой БД в плане ближайшего будущего или если это просто «может произойти», игнорируйте это сейчас, рассмотрите возможность сделать это позже как часть необходимого рефакторинга на этом этапе. момент.