Linq-запрос для создания таблицы PIVOT - PullRequest
0 голосов
/ 19 февраля 2009

У меня есть три таблицы 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 Ответ

1 голос
/ 03 марта 2009

Разве ты не можешь просто сделать это? Не нужно никаких фантазий 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;}

}
...