OrderBy之后再GroupBy导致被重新排序的问题
db.t_News.OrderByDescending(q => q.ID).Take(400).GroupBy(q => q.Tags)
本来以为结果是按照ID的倒序排列,结果
GroupBy之后,key会自动按照自己的一套从小到大重新排序
应该怎么破?。。
目的是取出最后400条数据,根据tags分组之后,按照分组里面的最大ID值来排序key出现的顺序。
------解决方案--------------------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 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);