我有一个按字母顺序排序的内容列表。我可以使用以下代码加载此列表:
model.Posters = this.NoTrackSet<Presentation>()
.OrderBy(v => v.Title)
.AsNoTracking().ToList();
现在,在我的 UI 中,用户可以单击其中一项来深入了解该对象的详细信息。
我的任务是在详细信息页面上添加“下一个”和“上一个”项目,但是我无法找出用于查找上一个项目和下一个项目的 SQL。
我考虑过加载整个列表两次,并试图找出我在哪里,并向前/向后做一个数组,但似乎必须有一种更直接的方法来做到这一点。我需要按标题字母顺序获取上一个和下一个项目。
为了幽默各位大神,这是我当前的下一个/上一个 SQL 代码
Presentation prevPoster = this.NoTrackSet<Presentation>()
.FirstOrDefault(x => x.PresentationTypeId == prs.PresentationTypeId
&& x.SessionId == prs.SessionId);
Presentation nextPoster = this.NoTrackSet<Presentation>()
.FirstOrDefault(x => x.PresentationTypeId == prs.PresentationTypeId
&& x.SessionId == prs.SessionId);
这显然不能正常工作。
最佳答案
类似这样的事情:
上一个:
db.Set<Presentation>()
.Where(x => x.Title < currentTitle)
.OrderByDescending(x => x.Title)
.FirstOrDefault()
下一个:
db.Set<Presentation>()
.Where(x => x.Title > currentTitle)
.OrderBy(x => x.Title)
.FirstOrDefault()
关于c# - EF Core 查询 - 有没有办法按字母顺序查找下一个和上一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72531948/