使用ASP.NET将三级数据层次结构渲染到HTML表中

时间:2012-06-08 16:36:17

标签: linq nested

说我在C#中有一些机场,飞机,乘客和座位课程。乘客拥有飞机的身份,而飞机拥有机场的身份证。乘客也有座位的身份。

如何编写linq查询以将它们构建为层次结构,然后将它们呈现为HTML表格?

我需要它看起来像:

          1      2      3
Gatwick  
747       July   Kim    Ben
767       Neal   Toby
A380      Becky

Hong Kong
747       Gary   Steve  Gary
MiG-35    Ted

etc.. 

(座位号位于顶部)

我一直在LinqPad面前摸不着头脑,但我只能在层次结构中获得一个级别。我想我可能需要使用嵌套的GridViews或者编写一个自定义控件来渲染生成的对象,但我不确定最好的approch。

理想情况下,我希望通过单个查询获取所有数据(之前的程序员已经使用每个单元格一个查询完成了该操作,页面需要一分钟才能加载!)

非常感谢

1 个答案:

答案 0 :(得分:0)

这需要2个LINQ查询:

  1. 您必须按座位号分组(或使用.Distinct()获取座位号)。用它来输出列;
  2. 然后按机场分组,然后是飞机,然后在每个飞机分组中,你有乘客 - 你用他们的座位收集他们。(

    passengers
      .GroupBy(p => p.Aeroplane)
      .GroupBy(p => p.Airport)
      .Join(seats, p=>p.Seat, s=>s, (p,s)=>new { Passenger = p, Seat = seat })
    
  3. 这将为您提供一系列乘客及其在每架飞机上的座位,然后在每个机场。