2012-06-08 3 views
0

Скажем, у меня были несколько классов аэропортов, самолетов, пассажиров и мест в C#. Пассажир имеет идентификатор самолета, а самолет имеет идентификатор аэропорта. Пассажир также имеет идентификатор места.Предоставление трехуровневой иерархии данных в таблицу HTML с помощью ASP.NET

Как написать запрос 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 или, возможно, написать собственный элемент управления для рендеринга результирующего объекта, но я не уверен в наилучшем подходе.

В идеале я хотел бы получить все данные с помощью одного запроса (предыдущий программист сделал это с помощью одного запроса на ячейку и страница занимает минуту, чтобы загрузить!)

Большое спасибо

ответ

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 }) 
    

Это даст вам множество пассажиров и их соответствующее место в каждом самолете, а затем в каждом аэропорту.

+0

Спасибо за ответ. Хорошо, # 1 не должно быть проблемой, но я немного не уверен в # 2. я могу сделать что-то это: от А в Airpot присоединиться к ару в Аэроплане на A.id == ap.Airport_Id в AirportAeroplane выбери AirportAeroplane но потом как бы я присоединиться к Пассажиру? Спасибо (извините за форматирование кстати) – Jon

+0

См. Обновленное сообщение. –

+0

Awesome, спасибо за обновление. – Jon

Смежные вопросы