除了存储“排序”列表(调用Reverse
实际上只是创建一个向后迭代器,它不会重新排序)。Skip
如果您不想使用,则不必使用。
例如,如果您总是显示第 1 页,然后是第 2 页,然后是第 3 页,您可以简单地Take
单独使用:
// done when user clicks something to change `order`
orderedEnumerator = order == SortOrder.Ascending ? list : list.Reverse();
//...
foreach(var e in orderedEnumerator.Take(pageSize)
{
// show first page
}
foreach(var e in orderedEnumerator.Take(pageSize)
{
// show second page
}
foreach(var e in orderedEnumerator.Take(pageSize)
{
// show third page
}
实际foreach
代码可能是在不同时间执行的相同代码块,例如:
IEnumerable<MyType> GetCurrentPage()
{
return orderedEnumerator.Take(pageSize);
}
public void nextPageButton_Click(object sender, EventArgs e)
{
foreach(var e in GetCurrentPage())
{
// elements in current page
}
}