如何使用EF Core反转分页数据源,让新数据显示在首页?
实现EF Core 6分页数据反转显示(新数据优先)
EF Core无法将TakeLast转换为SQL语句(尤其是SQLite不支持相关语法),所以不能直接用这个方法实现需求。正确的做法是先对数据按ID降序排序,再用常规的Skip+Take做分页,这样最新的(ID递增的)数据会默认排在第一页。
修改后的代码如下:
using (var _sqliteContext = new SQLiteContext()) { AssociatedObject.LoadDynamicItems(e.StartIndex, await _sqliteContext.Equipments .Include(x => x.CostCenter) .Include(x => x.EqInfo) .OrderByDescending(x => x.Id) // 按ID降序,新数据排在最前 .Skip(e.StartIndex) .Take(e.PageSize) .ToListAsync()); }
关键说明
OrderByDescending(x => x.Id)是核心:将数据按主键ID从大到小排序,确保最新创建的(ID最大的)数据排在结果集最前面。- 后续的
Skip(e.StartIndex)和Take(e.PageSize)会基于排序后的结果集分页,第一页(e.StartIndex=0)自然就是最新的一批数据。 - 如果你的设备表主键不是
Id,替换为实际的主键字段名即可(比如EquipmentId)。
内容的提问来源于stack exchange,提问作者Alex Wright
相关产品推荐
相关产品推荐

