02.
Console.WriteLine(
"---------第一种写法"
);
03.
var TermAvgScore_1 = (from l
in
lst
04.
group l by
new
{ Term = l.Term, Course = l.Course } into grouped
05.
orderby grouped.Average(m => m.Score) ascending
06.
orderby grouped.Key.Term descending
07.
select
new
{ Term = grouped.Key.Term, Course = grouped.Key.Course, Scores = grouped.Average(m => m.Score) }).ToList();
08.
foreach
(var l
in
TermAvgScore_1)
09.
{
10.
Console.WriteLine(
"学期:{0},课程{1},均分{2}"
, l.Term, l.Course, l.Scores);
11.
}
12.
Console.WriteLine(
"---------第二种写法"
);
13.
var TermAvgScore_2 = lst.GroupBy(m =>
new
{ Term = m.Term, Course = m.Course })
14.
.Select(k =>
new
{ Term = k.Key.Term, Course = k.Key.Course, Scores = k.Average(m => m.Score) })
15.
.OrderBy(l => l.Scores).OrderByDescending(l => l.Term);
16.
foreach
(var l
in
TermAvgScore_2)
17.
{
18.
Console.WriteLine(
"学期:{0},课程{1},均分{2}"
, l.Term, l.Course, l.Scores);
19.
}
Linq中没有SQL中的Having语句,因此是采用where语句对Group后的结果过滤。
原文 : http://www.it165.net/pro/html/201301/4521.html