Я могу ошибаться, но вы, похоже, не понимаете, как устроена viewModel.Код делает именно то, что вы описали.
Метод ToList () возвращает результат запроса, который был записан выше, в виде списка.Помните, что он не выполняется до вызова ToList ().
После получения результатов из базы данных они присваиваются свойствам в классе StoreIndexViewModel.
Если мы напишем код другим способом, этобыть проще для понимания
public ActionResult Index()
{
// Retrieve list of Genres from database
var genres = from genre in storeDB.Genres select genre.Name;
var genresList=genres.ToList();
// Set up our ViewModel
StoreIndexViewModel viewModel = new StoreIndexViewModel()
viewModel.Genres=genresList;
viewModel.NumberOfGenres=genresList.Count;
// Return the view
return View(viewModel);
}
Обновление:
Вы не создаете список в ViewModel.Вы получаете их из базы данных.Если вы посмотрите на выражение LINQ, оно получит только названия жанров.Позже эти результаты присваиваются свойству класса.
ViewModels используются для предоставления дополнительной информации для View.Здесь он используется только для показа других жанров.Он использует только их имена, чтобы пользователи могли просматривать их.Я не проверял учебник, но для создания, удаления или редактирования жанров нужны свои функции.