Reputation: 6105
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
.
Upvotes: 22
Views: 58835
Reputation: 4892
Just use Take(n)
in LINQ
rptAnnouncement.DataSource = DbContext.Announcements
.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
.Take(5).ToList();
Upvotes: 2
Reputation: 50169
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
OrderByDescending()
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.Upvotes: 57
Reputation: 9314
If you only want the Top 5 then you can use the below .
rptAnnouncement.DataSource = DbContext.Announcements.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date).Take(5).ToList();
More details here
http://msdn.microsoft.com/en-us/library/bb503062.aspx
Upvotes: 5