嵌套LINQ查询在这种情况下?如何创建嵌套组

本文关键字:嵌套 创建 何创建 LINQ 查询 这种情况下 | 更新日期: 2023-09-27 18:06:07

我需要一个嵌套LINQ的帮助。

我的场景是

我有一个列表

HotelId int

列表

在房间里我有一个房间

我有重复的hotels条目和重复的roomsid条目

像这样

hotelid 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和rooms是一个房间列表,我在这里尝试了一些示例

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() )
                        )
                );

不成功. .有人能帮我吗?

嵌套LINQ查询在这种情况下?如何创建嵌套组

这是另一个可能的解决方案。我只是没能从清单上删除重复的房间。: 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
    }
}