c# - 使用 Linq 反向分页

标签 c# linq paging

我有一个场景,我必须使用 LINQ 以相反的方式获取分页记录。让我们假设我有 15 个项目,顺序是它们发布的顺序:

1, 2, 3, 4, 5.......... 15

页面大小为 5,如果用户在我的方法中发送 1 作为 currentPage。然后我应该能够返回 11, 12, 13, 14, 15 作为结果集,如果他发送 2 作为 currentPage 那么我应该返回 6 , 7, 8, 9, 10 等等。如何设置我为 Skip 方法提供的值,以便它以这种方式为我提供记录?是的,我也按日期升序排序。

最佳答案

只是一个简单的逻辑示例:

var nums = new[] {1, 2, 3, ..., 15};

var lastFew = nums.Reverse().Take(5).Reverse().ToArray();

或者,作为一个列表:

var nums = new List<int> { 1, 2, 3, ..., 15};
nums.Reverse();
nums.RemoveRange(5); // removes from index 5 till end
nums.Reverse();

实际的实现可能会因代码的设计方式等因素而有所不同,但这应该可以帮助您入门。

这里使用的关键方法是:ReverseTake限制返回的数量,Skip选择起始索引。如果您使用 Skip,则很可能完全避免使用 Reverse

关于c# - 使用 Linq 反向分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29329747/

相关文章:

c# - 如何强制二进制应用程序使用 C# 工具中的 SOCKS 代理?

c# - 在 .NET 中执行 stream.CopyTo(anotherStream) 时如何获得复制百分比?

c# - 如何在 case 语句中使用范围 C#

c# - 使用 Web 应用程序在 DocumentDB 中进行分页

cpu - 分页的地址转换会降低内存访问性能吗?

c# - 流畅的 nhibernate 查询需要很长时间才能使用分页对映射公式进行排序

c# - 只要TextBox具有键盘焦点,就保持弹出窗口处于打开状态并处于事件状态

c# - 在 Entity Framework 6 中使用一个 linq 查询选择多个对象

c# - 作为模拟 IQueryable 的 Provider 放什么

c# - 如何在属性中存储 Linq where 条件