首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2013-08-01 
OrderBy之后再GroupBy导致被重新排序的问题db.t_News.OrderByDescending(q q.ID).Take(400).GroupBy(q

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);

热点排行