MVC4 ToList() показывает первые несколько записей

107
9

Я просто изучаю, как использовать.net и mvc4, и у меня есть проблема. Я не знаю, как показать только первые 5 (или любое число) строк в таблице. Вот как я сейчас отправляю свою информацию в представление.

public ActionResult ActiveCampaigns()
{
var campaigns = db.ActiveCampaigns.ToList();
return View(campaigns);
}

Благодаря :)

Обновление: спасибо за быстрые ответы! Так просто!

db.ActiveCampaigns.Take(5).ToList()

Я искал высоко и низко и не мог найти это, мой google-fu должен быть выключен. Еще раз спасибо!

спросил(а) 2020-04-03T23:54:35+03:00 6 месяцев, 2 недели назад
1
Решение
82

Основным подходом было бы

 var campaigns = db.ActiveCampaigns.Take(5).ToList();

Но в зависимости от типа Context db это может закончиться неудачей. Skip() и Take() не всегда доступны или разрешены на всех интерфейсах, основанных на IEnumrable. В этом случае прочитайте ошибку. Обычно вы можете исправить это двумя способами:

 var campaigns = db.ActiveCampaigns.ToList().Take(5);  // expensive with many Campaigns

или, если у вас есть удобный критерий сортировки:

 var campaigns = db.ActiveCampaigns.OrderByDescending(c => c.Date).Take(5).ToList();

ответил(а) 2020-04-04T00:08:16.404620+03:00 6 месяцев, 2 недели назад
72

Enumerable.Take

public ActionResult ActiveCampaigns()
{
var campaigns = db.ActiveCampaigns.Take(5).ToList();
return View(campaigns);
}

ответил(а) 2020-04-03T23:54:35+03:00 6 месяцев, 2 недели назад
58

Я предполагаю, что вас интересует пейджинг, и в этом случае вам нужно будет использовать метод Skip(), а также:

var campaigns = db.ActiveCampaigns.Skip(5).Take(5).ToList();

вы получите страницу 2. Очевидно, вы захотите использовать формулу для отображения страницы:

var campaigns = db.ActiveCampaigns.Skip((page-1) * 5).Take(5).ToList();

ответил(а) 2020-04-03T23:54:35+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема