Подтвердить что ты не робот

Получить первые 5 значений с помощью лямбда-запроса

Вот мой код,

rptAnnouncement.DataSource = DbContext.Announcements
    .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
    .ToList();  

Я беру данные объявлений из базы данных с помощью лямбда и привязываю эти данные к ретранслятору ASP.NET(rptAnnouncement).

Но этот запрос возвращает все данные, я просто хочу получить первые 5 (первые 5) записей, таких как MS SQL Server select top 5 * from database.

4b9b3361

Ответ 1

Вы можете использовать OrderBy() для заказа элементов, а затем Take(), чтобы сделать первый 5.

rptAnnouncement.DataSource = DbContext.Announcements
    .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
    .OrderBy(n => n.Expire_Date.Value.Date)
    .Take(5);

Примечания

  • Вы можете заказать спуск с помощью OrderByDescending()
  • Вызов ToList(), а затем вызов Take() получит все предметы, а затем возьмет верхняя пятерка, а не только верхняя пятерка.

Ответ 2

Если вы хотите только Top 5, вы можете использовать ниже.

rptAnnouncement.DataSource = DbContext.Announcements.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date).Take(5).ToList();

Подробнее здесь

http://msdn.microsoft.com/en-us/library/bb503062.aspx

Ответ 3

Просто используйте Take(n) в LINQ

rptAnnouncement.DataSource = DbContext.Announcements
                                      .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
                                      .Take(5).ToList();