Да, вы можете загрузить все данные поиска при запуске приложения, в одном вызове, возвращающем несколько наборов результатов. Приложение Winforms, которое я унаследовал, делало именно это, но компромисс заключался в том, что время запуска было ужасно медленным, поскольку вызов веб-службы, который выполнялся для извлечения данных поиска из базы данных для возврата всех кэшированных наборов результатов, занял несколько секунд, чтобы выполнить. Если это проблема, вы можете запустить асинхронный вызов базы данных / веб-службы, чтобы в процессе выполнения кода базы данных можно было выполнить больше действий по инициализации. Если вам необходимо убедиться, что данные были возвращены до того, как пользователь выполнит определенную задачу, такую как нажатие кнопки для отображения экрана с одним или несколькими выпадающими списками, требующими кэширования данных, использование одного или нескольких таймеров Winforms может помочь также.
Еще одним вариантом повышения производительности может быть выполнение вызова доступа к данным в отдельном потоке, хотя в проекте, над которым я работал, я нашел другие варианты, достаточные для сокращения времени запуска с примерно 10 секунд до менее 3 секунд без приходится иметь дело со сложностями многопоточности.