获取具有实体框架的特定ID的下一个和上一个实体?

Moh*_*yan 4 c# entity-framework-6

我有一个员工表单,用于在我的项目中使用ASP.NET MVC5编辑或显示个人信息,此表单获取Id并显示员工信息.

在这种形式我必须NextPrevious按钮,允许管理员导航到下一个或前员工(如果没有员工的按钮应禁用).另一方面,此表单具有由Admin设置的变量排序.

因此,我想将两个<a />标签与下一个和上一个员工ID相关联,并将其链接到员工表单.

<< Previous employee Id by sorting             Next employee Id by sorting >>
Run Code Online (Sandbox Code Playgroud)

我知道如何获得当前的员工,这在Entity Framework中非常简单.

但是,如何通过实体框架获取当前Id的下一个和上一个ID?

Fab*_*ino 10

如果我正确理解了您的问题,"下一个"或"上一个"的概念与您用于排序的规则有关.现在,让我使用简单的"按ID排序"作为排序规则.通过3个查询,您可以获得当前,下一个和上一个项目:

int id = 562;  // the current id
var curr = (from x in dbCtx.Employees where x.ID == id select x).Single();
var prev = (from x in dbCtx.Employees where x.ID < id orderby x.ID descending select x).FirstOrDefault();
var next = (from x in dbCtx.Employees where x.ID > id orderby x.ID ascending select x).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

您可以减少3到2个查询.第一个和第二个可以在单个查询中混合.此查询返回当前和上一项:

(from x in dbCtx.Employees where x.ID <= id orderby x.ID descending select x).take(2)  
Run Code Online (Sandbox Code Playgroud)