Limit Number of Results being returned in a List from Linq

asp.net-mvc-3 c# entity-framework linq

Question

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 aList 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.

1
68
6/4/2012 2:58:39 PM

Accepted Answer

Apply theTake function

int numberOfrecords=10; // read from user
listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)

Assuming listOfItems consists is a list of your entity objectsCreatedDate 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.

http://msdn.microsoft.com/en-us/library/bb503062.aspx

131
6/4/2012 5:06:22 PM

Popular Answer

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.Skip() :

results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10);


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow