这个问题是对Https://stackoverflow.com/questions/157786/how-do-i-get-the-max-row-with-a-group-by-in-linq-query的进一步问题.除了最大值和组键之外,我还需要该行的每一列(包括最重要的一列:id).
例如,给定的学生表
ID | Name | Class | Score |
---|---|---|---|
1 | N0 | C0 | 0 |
2 | N1 | C0 | 1 |
3 | N2 | C1 | 1 |
4 | N3 | C1 | 2 |
5 | N4 | C1 | 3 |
6 | N5 | C2 | 4 |
7 | N6 | C2 | 5 |
为了让一整排得分最高的学生按班级分组,我想出了一个方法,但对它的简单性不满意:
from o in Students
join o1 in
(from oo in Students
group oo by oo.Class
into g
select new { Class = g.Key, MaxScore = g.Max(x => x.Score)})
on o.Class + o.Score equals o1.Class + o1.MaxScore
select o
我的问题是:有没有更简单的方法通过使用LINQ或原始MSSQL来实现上述目标?