Вложенный запрос LINQ в этом случае?Как создать вложенную группу? - PullRequest
2 голосов
/ 18 августа 2011

Мне нужна помощь с вложенным LINQ здесь.

Мой сценарий

У меня есть список с

HotelId int Список

В комнатах у меня есть комната

У меня есть дубликаты записей отелей и дубликаты записей Roomsid

как то так

HoteId 2500

  • RoomID 23
  • RoomID 26

HotelId 3500

  • RoomID 50
  • RoomID 65

HotelId 2500

  • RoomID 23

HotelId 3900

  • RoomID 48

HotelId 3500

  • RoomID 32

Я хочу сначала группу по отелю, это, конечно, легко

listaHoteisEncontrados.GroupBy( x => x.HotelId );

Но мне нужно что-то в

Dictionary<int,List<rooms>>

где int - это мой IdHotel, а комнаты - список номеров, которые я пробовал здесь.

Dictionary<int, List<Dados.HotelSearchResponse.Room>> otroDic =
        listaHoteisEncontrados
            .GroupBy( x => x.HotelId )
            .ToDictionary(
                g => g.Key,
                g => g
                    .GroupBy( e => e.Room
                        .GroupBy( f => f.RoomType ).ToDictionary
                        ( g2 => g2.Key, g2 => g2.Select( p => p.RoomType ).ToList() )
                        )
                );

без успеха .. кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 19 августа 2011

Вот еще одно возможное решение.Мне только не удалось удалить дублирующиеся комнаты из списка ..: D

var dic = new Dictionary<int, List<Room>>();
foreach (var hotel in listaHoteisEncontrados)
{
    if (!dic.ContainsKey(hotel.Id))
    {
        dic.Add(hotel.Id, hotel.Rooms);
    }
    else
    {
        dic[hotel.Id].AddRange(hotel.Rooms);
        //remove duplicate rooms here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...