Linq查询创建PIVOT表

时间:2009-02-19 15:40:37

标签: linq pivot

我有三个表table1,table2和table3

Table1                                                
Id  Data
1   Data1
2   Data2
3   Data3

Table2
Id  Meta data
1   Meta data1
2   Meta data2
“     "
“     "
“     "

Table 3
Id   Data ID  Meta Data ID      Value
1    Data1    Metadata1         Value1
2    Data1    Metadata2         Value2
3    Data2    Metadata1         Value3
4    Data2    Metadata2         Value4

我想通过使用LINQ查询

连接这些表来创建数据透视表

我的结果表应如下所示

Data   Metadata 1  Metadata2  ‘”””   and so on……
Data1  Value1      Value2     
Data2  Value3      Value4

什么是适当的linq查询,可能是我实现结果的解决方案?

1 个答案:

答案 0 :(得分:1)

你不能这样做吗?没有花哨的linq是必要的

var dict = new Dictionary<object, PivotedValue>();

foreach(var t in table3){
    if(!dict.ContainsKey(t.DataID)) dict.Add(t.DataID, new PivotedValue{DataID = t.DataID});
    dict[t.DataID].PivotedFields.Add(t.MetaDataID, t.Value);
}


class PivotedValue{

    object DataID {get;set;}
    Dictionary<object, object> PivotedFields {get;set;}

}