В качестве первого вопроса нам нужно изучить порядок запросов в этой строке:
Vidsteduliste = db.Vidstedu.OrderByDescending(v => v.Dato).Take(4).FirstOrDefault();
OrderByDescending
на основе Dato
свойство
Take
выбирает первые 4 записи из упорядоченных записей
FirstOrDefault
берет первый элемент из оставшихся 4 записей и возвращает одну запись в наборе результатов (вместо 4, которые вы хотите)
Вторая проблема - вместо того, чтобы возвращать вышеуказанный набор результатов, вы фактически возвращаете все записи из-за этого оператора return
, который не должен возвращать Vidsteduliste
:
return View(ViewModel);
в то время как ранее ViewModel
назначено с этой строкой:
ViewModel.Vidstedu = db.Vidstedu.ToList(); // returns all records from 'Vidstedu'
Поскольку вы хотите показать 4 верхние записи, упорядоченные по последнему значению Dato
, просто удалите все ненужные экземпляры списка, такие как List<tblVidstedu> Vidsteduliste = new List<tblVidstedu>();
, и верните эти записи непосредственно из действия контроллера:
ViewModel.Vidstedu = db.Vidstedu.OrderByDescending(v => v.Dato).Take(4).ToList();
return View(ViewModel);
Затем вы можете использовать цикл foreach
для отображения записей, хранящихся в списке Vidstedu
на странице просмотра.