Get top 5 values with lambda query

asp.net, c#, linq, sql-server

Solution

You can use `OrderBy()` to order the elements and then `Take()` to take the first 5.

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

Notes

- You can order descending by using `OrderByDescending()`

- Calling `ToList()` and then calling `Take()` will get all of the items and then take the top 5 as opposed to only getting the top 5.

Problem

Here is my code, ``` rptAnnouncement.DataSource = DbContext.Announcements .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date) .ToList(); ``` I take the announcements data from database with lambda and bind this data to ASP.NET repeater(`rptAnnouncement`). But this query returns all of the data, I just want to get the top 5 (first 5) records like MS SQL Server's `select top 5 * from database`.

Original source

Related problems