我使用的是.NET Core 1.1,EF Core 1.1。
我有一个Category
对象我要查询分页。我的函数接收前端解析的最后一个对象的ID,然后我需要获取下一个X对象。但是,我按字母顺序排序,并且我不确定如何在具有给定ID的对象之后按字母顺序获取对象。
例如,让我说我的数据库中有这个:
ID | Name
---|-----
1 | Sports
2 | Music
3 | Books
4 | TV Shows
为简单起见,我们说我每页只需要两个结果。我的前端将传入ID 2,表示音乐是该网站显示的最新对象,它按字母顺序排列接下来的两个。因此,我需要按顺序返回ID为1和4的对象,因为它们的名称是按字母顺序排列的下两个。如果我传入ID 3,我希望结果为2和1。
如何使用EF完成此操作?我觉得这应该很简单,但我无法弄清楚。
答案 0 :(得分:1)
假设Name
是唯一的,您需要两个查询:一个用于获取传递的Name
的相应ID
,然后将其用作第二个查询的参数,选择更高Name
的项目,然后排序并获取所需的计数:
int lastId = ...;
var lastName = db.Table.Where(e => e.ID == lastId).Select(e => e.Name).FirstOrDefault();
var result = db.Table
.Where(e => string.Compare(e.Name, lastName) > 0)
.OrderBy(e => e.Name)
.Take(2);