【发布时间】:2012-12-28 17:09:01
【问题描述】:
我有以下动态列表
Crew NameSurname Period Result
ABC John DOE Q1 54,09
ABC John DOE Q2 59,57
ABC John DOE Q3 62,11
我怎样才能在 linq 中得到这个结果。
Crew NameSurname Q1 Q2 Q3
ABC John DOE 47,51 47,51 51,46
我试过这种方法,但我无法得到结果
List.GroupBy(c => c.PersonnelID)
.Select(g => new
{
PersonnelID = g.Key,
Period1 = g.Where(c => c.Period == 1).Sum(c => c.Result),
Period2 = g.Where(c => c.Period == 2).Sum(c => c.Result),
Period3 = g.Where(c => c.Period == 3).Sum(c => c.Result)
});
【问题讨论】:
-
L2S 是一种 ORM(排序),而不是 SQL 的替代品。如果你想做复杂的 SQL 转换,比如 PIVOT,编写 SQL 语句并使用 ORM 将结果映射到对象要容易得多,性能也更高。