我有一种情况,我必须使用LINQ以相反的方式获取分页记录.假设我有15项按照发布的顺序排列:
1, 2, 3, 4, 5.......... 15
如果用户在我的方法中发送1作为currentPage,则页面大小为5.然后我应该能够返回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();
实际的实现可能会有所不同,具体取决于代码的设计方式等,但这应该可以帮助您入门.
此处使用的主要方法是:反向,采取以限制返回的数量和跳过以选择起始索引.如果使用“跳过”,则很可能完全避免使用“反向”.