Limit Number of Results being returned in a List from Linq
Solution 1:
Use the Take
function
int numberOfrecords=10; // read from user
listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)
Assuming listOfItems
is List of your entity objects and CreatedDate
is a field which has the date created value (used here to do the Order by descending to get recent items).
Take() Function returns a specified number of contiguous elements from the start of a sequence.
http://msdn.microsoft.com/en-us/library/bb503062.aspx
Solution 2:
results = results.OrderByDescending(x=>x.Date).Take(10);
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()
:
results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10);
Solution 3:
Use Take()
, before converting to a List. This way EF can optimize the query it creates and only return the data you need.