使用 Linq 对多个表进行透视
Pivot multiple tables using Linq
您好,我有以下 table 需要调整以获得所需的结果。
tblUsername
userId username
---------------------
1 jadam
2 janeb
3 peterk
4 rickd
第二个 table 是
tablcolumns
=============
colId colname
-----------------
1 Name
2 Monday
3 Tuesday
4 Wednesday
5 Thursday
6 Friday
7 Saturday
8 Sunday
第三个table
tblSchedule
==================
id userId colId hrs
--------------------------
1 2 3 4
2 3 7 7.5
3 1 8 2
I am trying to write Linq statem
我想旋转这些 table 以获得像
这样的回复
Name Monday Tuesday Wednesday Thursday Friday Saturday Sunday
jadam 2
janeb 4
peterk 7.5
rickd
我尝试使用 Linq join 但它没有用我认为它需要分组,而且我不太熟悉它。谢谢
LINQ 中没有内置的数据透视表功能。我想你可以写一个动态创建 select - 但是,它可能不会太有效。无论如何,对于这种情况,由于每周的天数不会改变,您可以这样做:
var query = tblUsername.Select(u => new {
Name = u.username,
Monday = u.tblSchedule.Where(sch => sch.colId == 2).Sum(sch => sch.hrs),
Tuesday = u.tblSchedule.Where(sch => sch.colId == 3).Sum(sch => sch.hrs),
Wednesday = u.tblSchedule.Where(sch => sch.colId == 4).Sum(sch => sch.hrs),
Thursday = u.tblSchedule.Where(sch => sch.colId == 5).Sum(sch => sch.hrs),
Friday = u.tblSchedule.Where(sch => sch.colId == 6).Sum(sch => sch.hrs),
Saturday = u.tblSchedule.Where(sch => sch.colId == 7).Sum(sch => sch.hrs),
Sunday = u.tblSchedule.Where(sch => sch.colId == 8).Sum(sch => sch.hrs),
});
您好,我有以下 table 需要调整以获得所需的结果。
tblUsername
userId username
---------------------
1 jadam
2 janeb
3 peterk
4 rickd
第二个 table 是
tablcolumns
=============
colId colname
-----------------
1 Name
2 Monday
3 Tuesday
4 Wednesday
5 Thursday
6 Friday
7 Saturday
8 Sunday
第三个table
tblSchedule
==================
id userId colId hrs
--------------------------
1 2 3 4
2 3 7 7.5
3 1 8 2
I am trying to write Linq statem
我想旋转这些 table 以获得像
这样的回复Name Monday Tuesday Wednesday Thursday Friday Saturday Sunday
jadam 2
janeb 4
peterk 7.5
rickd
我尝试使用 Linq join 但它没有用我认为它需要分组,而且我不太熟悉它。谢谢
LINQ 中没有内置的数据透视表功能。我想你可以写一个动态创建 select - 但是,它可能不会太有效。无论如何,对于这种情况,由于每周的天数不会改变,您可以这样做:
var query = tblUsername.Select(u => new {
Name = u.username,
Monday = u.tblSchedule.Where(sch => sch.colId == 2).Sum(sch => sch.hrs),
Tuesday = u.tblSchedule.Where(sch => sch.colId == 3).Sum(sch => sch.hrs),
Wednesday = u.tblSchedule.Where(sch => sch.colId == 4).Sum(sch => sch.hrs),
Thursday = u.tblSchedule.Where(sch => sch.colId == 5).Sum(sch => sch.hrs),
Friday = u.tblSchedule.Where(sch => sch.colId == 6).Sum(sch => sch.hrs),
Saturday = u.tblSchedule.Where(sch => sch.colId == 7).Sum(sch => sch.hrs),
Sunday = u.tblSchedule.Where(sch => sch.colId == 8).Sum(sch => sch.hrs),
});