读书人

OrderBy之后再GroupBy导致被重新排序的

发布时间: 2013-08-01 15:23:18 作者: rapoo

OrderBy之后再GroupBy导致被重新排序的问题


db.t_News.OrderByDescending(q => q.ID).Take(400).GroupBy(q => q.Tags)

本来以为结果是按照ID的倒序排列,结果
GroupBy之后,key会自动按照自己的一套从小到大重新排序
应该怎么破?。。

目的是取出最后400条数据,根据tags分组之后,按照分组里面的最大ID值来排序key出现的顺序。 Groupby排序
[解决办法]
var list = db.t_News.OrderByDescending(q => q.ID).ToList();
var query = list.Take(400).GroupBy(q => q.Tags);
将OrderBy的结果固定下来。
[解决办法]
理论上来讲,当执行到 db.t_News.OrderByDescending(q => q.ID).Take(400) Take()这后,数据就已经加载到内存里了

引用:
按照分组里面的最大ID值来排序key出现的顺序。


我不是很明白楼主的意图,比如有这样的数据:
ID   Tag
100 A
110 B
120 A
130 B


你想最终显示的效果是什么样?

结果1:
ID   Tag
130 B
110 B
120 A
100 A


结果2:
ID   Tag
130 B
120 A
110 B
100 A

[解决办法]
结果1:

db.t_News.OrderByDescending(q => q.ID).Take(400).GroupBy(q => q.Tags).OrderByDescending(g=>g.Max(x=>x.ID);


结果2:
db.t_News.OrderByDescending(q => q.ID).Take(400);

读书人网 >.NET

热点推荐