Voici mon code,
rptAnnouncement.DataSource = DbContext.Announcements
.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
.ToList();
Je prends les données d'annonces de la base de données avec lambda et je lie ces données au répéteur ASP.NET (rptAnnouncement
).
Mais cette requête renvoie toutes les données, je veux juste obtenir les 5 premiers (5 premiers) enregistrements comme select top 5 * from database
De MS SQL Server.
Vous pouvez utiliser OrderBy()
pour ordonner les éléments puis Take()
pour prendre les 5 premiers.
rptAnnouncement.DataSource = DbContext.Announcements
.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
.OrderBy(n => n.Expire_Date.Value.Date)
.Take(5);
Notes
OrderByDescending()
ToList()
puis appeler Take()
obtiendra tous les éléments, puis prendra le top 5 par opposition à obtenir uniquement le Top 5.Si vous ne voulez que le Top 5, vous pouvez utiliser le ci-dessous.
rptAnnouncement.DataSource = DbContext.Announcements.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date).Take(5).ToList();
Plus de détails ici
Utilisez simplement Take(n)
dans LINQ
rptAnnouncement.DataSource = DbContext.Announcements
.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
.Take(5).ToList();