c# - EF Core 查询 - 有没有办法按字母顺序查找下一个和上一个项目?

标签 c# linq sorting entity-framework-core alphabetical

我有一个按字母顺序排序的内容列表。我可以使用以下代码加载此列表:

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/

相关文章:

java - 如何按最接近的值排序列表

c# 电子邮件对象流式传输到附件

c# - 深度克隆对象后清除主键

c# - 方法不能显式调用运算符或访问器

c# - 将列表的列表变成列表

c# - LINQ 和 SQL 中看似等效的查询返回不同的结果

Scala 动态列表排序

c# - 关于 C#、服务器、XML 的问题

c# - LINQ Group By 如果一个对象有 x 个属性,则在每个组上进行选择

java - 按 Map <Object b, Integer int> 的值对 <Object a> 列表进行排序会导致具有不同私有(private)字段的对象崩溃