Csharp/C#教程:按ID和名称获取下一个和上一个sql行,EF?分享


按ID和名称获取下一个和上一个sql行,EF?

假设我们在SQL Server表中有以下数据(按名称排序):

Id Name LName ------------------------- 5 Abbas Dayyan 3 Mohammad KD 4 Nima Ahmad 1 Omid Zangene 2 Pedram Ahmadi 

我们有一个Id查询字符串,我们想从Id获取下一行和上一行(如果存在)。

例如:

Id查询字符串是4,因此我们希望将Mohammad KD作为前一行,将Omid Zangene作为下一行。

你能指导我如何使用LINQ to Entity Framework做到这一点。

编辑:
实际上,表行的数量约为100万。
默认情况下,表行没有按名称排序,wa需要按名称对结果进行排序。

这个怎么样?

 var result = (from person in db.People where person.Id == id let ordered = db.People.OrderBy(p => p.Name) let reversed = db.People.OrderByDescending(p => p.Name) let previous = reversed.SkipWhile(p => p.Id != id).Skip(1).FirstOrDefault() let next = ordered.SkipWhile(p => p.Id != id).Skip(1).FirstOrDefault() select new { previous, next }).First(); 

编辑:考虑新规范。

编辑2:修改代码不使用LastOrDefault ,这不适用于LINQ to Entities。

试试这个:

  int id = 4; var list = (from x in ctx.Table where x.id >= id - 1 && x.id <= id + 1 select x).OrderBy(o -> o.name).ToList(); 

编辑:这将返回ID为3,4和5的元素。我不知道你是否实际按名称在数据库中排序表,但如果你认为你更容易使用循环而不是使用linq来获取上一个和下一个元素。

更新:按名称对结果进行排序

上述就是C#学习教程:按ID和名称获取下一个和上一个sql行,EF?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1013402.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐