I'm using Linq/EF4.1 to pull some results from a database and would like to limit the results to the (X) most recent results. Where X is a number set by the user.
Is there a way to do this?
I'm currently passing them back as a List
if this will help with limiting the result set. While I can limit this by looping until I hit X I'd just assume not pass the extra data around.
Just in case it is relevant... C# MVC3 project running from a SQL Server database.
Use the
Take
functionAssuming
listOfItems
is List of your entity objects andCreatedDate
is a field which has the date created value (used here to do the Order by descending to get recent items).http://msdn.microsoft.com/en-us/library/bb503062.aspx
The OrderByDescending will sort items by your date/time property (or w/e logic you want to use to get most recent) and Take will limit to first x items (first being most recent, thanks to the ordering).
Edit: To return some rows not starting at the first row, use
Skip()
:Use
Take()
, before converting to a List. This way EF can optimize the query it creates and only return the data you need.