"Какие ещё варианты есть выполнить поиск по базе единожды и хранить результаты до их ненадобности ?" А что будете делать если между двумя запросами база изменится? покажите пользователю устаревшие данные? или например у Вас огромная база данных - вы собираетесь вытянуть ее всю а потом фильтровать по этому набору данных?
Я бы посмотрел в сторону пакета
MvcPaging