在具有指定ID

时间:2016-12-12 18:45:08

标签: c# entity-framework asp.net-core entity-framework-core

我使用的是.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完成此操作?我觉得这应该很简单,但我无法弄清楚。

1 个答案:

答案 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);