[英]Union order in Linq to Entities
我对 EDM model Union select 有疑问。 我在 db 中有带有唯一 ID 的记录。 例如 id 列表:1、2、3、4、5、6、7、8、9
例如,我需要 select,在 #6 之前记录 #6 和 2 条记录,在 #6 之后记录 2 条记录。 在 select 结果中它应该是 4,5,6,7,8
我做了下一个方法:
public IQueryable<photos> 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 descending
select m).Take(3).Skip(0);
return (p1.Union(p2));
}
但是顺序与示例中的不同...
谢谢您的帮助!
你不能假设任何排序。 如果你想要订购东西,你总是需要一个 OrderBy。
return p1.Union(p2).OrderBy(p=> p.id);
这是因为后者的联盟,你不能保证它的顺序。 您想在返回时执行此操作:
return (p1.Union(p2).OrderByDescending(m => m.id));
更新
随着对这些问题的进一步了解,我认为这将解决它:
public IQueryable<photos> 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));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.