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
.
There is no performance difference between LINQ queries and Lambda expressions.
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.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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With