Limit Number of Results being returned in a List f

2020-05-22 03:49发布

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.

3条回答
贼婆χ
2楼-- · 2020-05-22 04:10

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

查看更多
对你真心纯属浪费
3楼-- · 2020-05-22 04:11
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);
查看更多
别忘想泡老子
4楼-- · 2020-05-22 04:23

Use Take(), before converting to a List. This way EF can optimize the query it creates and only return the data you need.

查看更多
登录 后发表回答