Limit Number of Results being returned in a List from Linq

后端 未结 3 1967
[愿得一人]
[愿得一人] 2021-02-03 16:54

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 t

相关标签:
3条回答
  • 2021-02-03 17:06

    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

    0 讨论(0)
  • 2021-02-03 17:07
    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);
    
    0 讨论(0)
  • 2021-02-03 17:28

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

    0 讨论(0)
提交回复
热议问题