Linq - 如何从平面转换为分层?

Ran*_*der 5 linq

我有以下结果集作为Linq查询的结果生成.我想将其转换为分层结果集.前两列表示'主'行,第3列和第4列表示主行的子列表,第5列和第6列表示主行的第二子列表.包含值1971的列是连接列.

最终结果应该是具有容器列表(G2列)和打印机列表(G3列)的主对象.

将此转换为分层表单的查询是什么样的?

G1_ID   G1_CellName  G2_ContainerID G2_ID   G2_SerialNumber G3_ID      G3_PrinterName
1971    Default Cell    1935           1971    1101929         1971       PBG-PrtEmulator1
1971    Default Cell    1936           1971    1101930         1971       PBG-PrtEmulator1
1971    Default Cell    2189           1971    1102183         1971       PBG-PrtEmulator1
Run Code Online (Sandbox Code Playgroud)

Bon*_*ton 3

通过...分组?

var result = from eachData in data
group eachData by new{ eachData .G1_ID, eachData .G1_CellName }
into g1
from eachG1 in g1
group eachG1 by new { eachG1.G2_..., eachG1.G2_... }
into g2
for eachG2 in g2
group eachG2 by new { eachG2.G3_... }
into g3
select g3;
Run Code Online (Sandbox Code Playgroud)

还没有测试过。但我确信它会看起来像这样。