I'm pulling some results from a database using Linq/EF4.1, and I'd want to restrict the results to the (X) most recent results. where X is a user-defined integer.
Exists a method to do this?
I'm returning them at the moment as a
if doing so would assist in reducing the number of results. Although I can stop it by looping until I reach X, I'd simply presume that passing the additional info around isn't necessary.
In case it's important... Running from a SQL Server database is a C# MVC3 project.
int numberOfrecords=10; // read from user listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)
consists is a list of your entity objects
is a field with the value "date generated" (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.
results = results.OrderByDescending(x=>x.Date).Take(10);
Items will be sorted using your date/time property (or whatever logic you want to use to obtain the most current) by OrderByDescending, and Take will only restrict to the first x items (first being most recent, thanks to the ordering).
Edit: Use to get certain rows that don't begin with the first row.
results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10);