我想使用Linq来查询我项目中的公交时刻表,以便随时可以获得下一个5次公交车到达时间.如何将查询限制为前5个结果?
更一般地说,我如何在C#中获取一个列表?(在Python中我会mylist[:5]
用来获得前5个元素.)
var firstFiveItems = myList.Take(5);
或切片:
var secondFiveItems = myList.Skip(5).Take(5);
当然,按照某种顺序获取前五个项目通常很方便:
var firstFiveArrivals = myList.OrderBy(i => i.ArrivalTime).Take(5);
如果有人感兴趣(即使问题没有要求这个版本),在C#2中将是:(我已经编辑了答案,遵循一些建议)
myList.Sort(CLASS_FOR_COMPARER); ListfiveElements = myList.GetRange(0, 5);
就像pagination
您可以使用以下公式进行服用slice of list or elements
:
var slice = myList.Skip((pageNumber - 1) * pageSize) .Take(pageSize);
示例1:前五个项目
var pageNumber = 1; var pageSize = 5;
示例2:后五个项目
var pageNumber = 2; var pageSize = 5;
示例3:前五个项目
var pageNumber = 3; var pageSize = 5;
如果通知配方参数
pageSize = 5
并且pageNumber
正在更改,则要更改切片中的项目数,请更改pageSize
。