0

C#で空港、飛行機、乗客、座席のクラスがいくつかあったとします。乗客は飛行機のIDを持ち、飛行機は空港のIDを持っています。乗客は座席のIDも持っています。

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の前で頭を悩ませてきましたが、階層内の1つのレベルしか取得できません。ネストされたGridViewを使用するか、カスタムコントロールを記述して結果のオブジェクトをレンダリングする必要があるかもしれませんが、最適なアプローチがわかりません。

理想的には、1つのクエリですべてのデータを取得したいと思います(以前のプログラマーはセルごとに1つのクエリを使用して取得しており、ページの読み込みには1分かかります!)

どうもありがとう

4

1 に答える 1

0

これには 2 つの LINQ クエリが必要です。

  1. 座席番号でグループ化する必要があります (または、.Distinct() を使用して座席番号を取得します)。これを使用して列を出力します。
  2. 次に、空港、次に飛行機でグループ化し、各飛行機のグループ化で乗客を取得します。座席コレクションで乗客を .Join() します。

    passengers
      .GroupBy(p => p.Aeroplane)
      .GroupBy(p => p.Airport)
      .Join(seats, p=>p.Seat, s=>s, (p,s)=>new { Passenger = p, Seat = seat })
    

これにより、各飛行機と各空港の乗客とそれぞれの座席の配列が得られます。

于 2012-06-08T16:41:05.667 に答える