我的 c# 代码中有这个数据表:
I have got this datatable in my c# code:
Date | Employee | Job1 | Job2 | Job3 |
---------|----------|------|------|-------|
1/1/2012 | A | 1.00 | 1 | 1 |
1/1/2012 | B | 2.5 | 2 | 2 |
1/1/2012 | C | 2.89 | 1 | 4 |
1/1/2012 | D | 4.11 | 2 | 1 |
1/2/2012 | A | 3 | 2 | 5 |
1/2/2012 | B | 2 | 2 | 2 |
1/2/2012 | C | 3 | 3 | 3 |
1/2/2012 | D | 1 | 1 | 1 |
1/3/2012 | A | 5 | 5 | 5 |
1/3/2012 | B | 2 | 2 | 6 |
1/3/2012 | C | 1 | 1 | 1 |
1/3/2012 | D | 2 | 3 | 4 |
2/1/2012 | A | 2 | 2 | 2 |
2/1/2012 | B | 5 | 5 | 2 |
2/1/2012 | D | 2 | 2 | 2 |
2/2/2012 | A | 3 | 3 | 3 |
2/2/2012 | B | 2 | 3 | 3 |
3/1/2012 | A | 4 | 4 | 2 |
现在我想创建另一个 DataTable,如下所示:
Now I want to create another DataTable which would look like this:
Job1
Employee | 1/1/2012 | 1/2/2012 | 1/3/2012 | 2/1/2012 | 2/2/2012 |
---------|----------|----------|----------|----------|----------|
A | 1.00 | 3 | 5 | 2 | 3 |
B | 2.50 | 2 | 2 | 5 | 2 |
C | 2.89 | 3 | 1 | - | |
D | 4.11 | 1 | 2 | 2 | |
Total | 10.50 | 9 | 10 | 9 | 5 |
请建议如何使用 Linq 和 C# 制作此数据透视表.
Please suggest how to make this pivot table using Linq and C#.
var query = from foo in db.Foos
group foo by foo.Date into g
select new {
Date = g.Key,
A = g.Where(x => x.Employee == "A").Sum(x => x.Job1),
B = g.Where(x => x.Employee == "B").Sum(x => x.Job1),
C = g.Where(x => x.Employee == "C").Sum(x => x.Job1),
D = g.Where(x => x.Employee == "D").Sum(x => x.Job1),
Total = g.Sum(x => x.Job1)
};
您也可以应用 OrderBy(x => x.Date)
进行查询.
You can also apply OrderBy(x => x.Date)
to query.