Csharp/C#教程:Linq to Entities的联盟订单分享


Linq to Entities的联盟订单

我有EDM模型联盟选择的问题。 我在db with uniqe Ids中有记录。 例如id列表:1,2,3,4,5,6,7,8,9

例如,我需要选择在#6之前记录#6和2记录,在#6之后记录2记录。 在选择结果中,它应该是4,5,6,7,8

我接下来做了这个:

public IQueryable GetNextPrev(Int64 photoid, string userlogin) { var p1 = (from m in db.photos where m.id = photoid && m.userlogin == userlogin orderby m.id descending select m).Take(3).Skip(0); return (p1.Union(p2)); } 

但是顺序与示例中的不同……

谢谢您的帮助!

这是因为后者的联盟,你无法保证订单。 您希望在返回时执行此操作:

 return (p1.Union(p2).OrderByDescending(m => m.id)); 

更新

通过进一步了解这些问题,我认为这将解决这个问题:

 public IQueryable GetNextPrev(Int64 photoid, string userlogin) { var p1 = (from m in db.photos where m.id < photoid && m.userlogin == userlogin orderby m.id descending select m).Take(2).Skip(0); var p2 = (from m in db.photos where m.id >= photoid && m.userlogin == userlogin orderby m.id select m).Take(3).Skip(0); return (p1.Union(p2).OrderBy(m => m.id)); } 

你不能假设任何订购。 如果你想要订购的东西,你总是需要一个OrderBy。

上述就是C#学习教程:Linq to Entities的联盟订单分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 return p1.Union(p2).OrderBy(p=> p.id); 

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

ctvol管理联系方式QQ:251552304

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

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

精彩推荐