Я хочу развернуть список с динамическим c количеством столбцов. Пока я нашел несколько примеров, но я не могу понять, как применить их к моей проблеме. Используя следующее, я получаю список, основанный на значении Dev.DevType
:
using (var context = new TableEntities())
{
var result = (from Dev in context.Device
from Mod in context.Module.Where(m => Dev.ModId == m.Id && Dev.SecId == m.SecId).DefaultIfEmpty()
from DevT in context.DevType.Where(d => Dev.DevType == d.DevType).DefaultIfEmpty()
where Dev.DevType == 10
select new temp
{
DevName = Dev.DevName,
DevSuffix = DevT.Suffix,
Name = String.Concat(Mod.ModName, "_", Dev.DevName, "_", DevT.Suffix),
}).ToList();
}
В зависимости от значений Dev.DevType у меня могут быть разные выходные данные, например:
Dev. DevType == 10:
DevName DevSuffix Name
Enter A Door_Enter_A
Enter Text Door_Enter_Text
Enter C Door_Enter_C
Hall A Door_Hall_A
Hall Text Door_Hall_Text
Hall C Door_Hall_C
Но это также может быть что-то вроде:
Dev.DevType == 15:
DevName DevSuffix Name
Attic A Window_Attic_A
Attic B Window_Attic_B
Attic Purple Window_Attic_Purple
Attic D Window_Attic_D
Attic E Window_Attic_E
Kitchen A Window_Kitchen_A
Kitchen B Window_Kitchen_B
Kitchen Purple Window_Kitchen_Purple
Kitchen D Window_Kitchen_D
Kitchen E Window_Kitchen_E
Dining A Window_Dining_A
Dining B Window_Dining_B
Dining Purple Window_Dining_Purple
Dining D Window_Dining_D
Dining E Window_Dining_E
Я хочу повернуть это так что у меня есть столбцы, основанные на DevSuffix, а строки содержат Name, поэтому:
С Dev.DevType == 10:
A Text C
Door_Enter_A Door_Enter_Text Door_Enter_C
Door_Hall_A Door_Hall_Text Door_Hall_C
И с Dev.DevType == 15:
A B Purple D E
Window_Attic_A Window_Attic_B Window_Attic_Purple Window_Attic_D Window_Attic_E
Window_Kitchen_A Window_Kitchen_B Window_Kitchen_Purple Window_Kitchen_D Window_Kitchen_E
Window_Dining_A Window_Dining_B Window_Dining_Purple Window_Dining_D Window_Dining_E
Я нашел несколько примеров, которые используют GroupBy()
или GroupJoin()
, но единственное, что я сделал, это:
.GroupBy(d => d.DevName, (Name) => new
{
Key = DevName,
Name = Name,
}).ToList();
Это приводит к тому, что выглядит как list
в a list
:
С Dev.DevType == 10:
DevSuffix Name
A Door_Enter_A
Door_Hall_A
Text Door_Enter_Text
Door_Hall_Text
C Door_Enter_C
Door_Hall_C
И с Dev.DevType == 15:
DevSuffix Name
A Window_Attic_A
Window_Kitchen_A
Window_Dining_A
B Window_Attic_B
Window_Kitchen_B
Window_Dining_B
Purple Window_Attic_Purple
Window_Kitchen_Purple
Window_Dining_Purple
D Window_Attic_D
Window_Kitchen_D
Window_Dining_D
E Window_Attic_E
Window_Kitchen_E
Window_Dining_E
Я не могу выясните, где go отсюда, поэтому любая помощь приветствуется. Заранее спасибо!