Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这种情况下的嵌套LINQ查询?如何创建嵌套的groupby?_C#_Linq_Group By_Nested - Fatal编程技术网

C# 这种情况下的嵌套LINQ查询?如何创建嵌套的groupby?

C# 这种情况下的嵌套LINQ查询?如何创建嵌套的groupby?,c#,linq,group-by,nested,C#,Linq,Group By,Nested,我需要一个关于嵌套LINQ的帮助 我的设想是 我有一份清单 霍特利德酒店 名单 在房间里我有一个室友 我有一个重复的酒店条目和重复的roomsid条目 像这样的 霍泰德2500酒店 23号房间 室友26 霍特利德3500酒店 室友50 室友65 霍特利德2500酒店 23号房间 霍特利德3900酒店 室友48 霍特利德3500酒店 32号房间 我想先去旅馆,这当然容易 listaHoteisEncontrados.GroupBy( x => x.HotelId );

我需要一个关于嵌套LINQ的帮助

我的设想是

我有一份清单

霍特利德酒店 名单

在房间里我有一个室友

我有一个重复的酒店条目和重复的roomsid条目

像这样的

霍泰德2500酒店

  • 23号房间
  • 室友26
霍特利德3500酒店

  • 室友50
  • 室友65
霍特利德2500酒店

  • 23号房间
霍特利德3900酒店

  • 室友48
霍特利德3500酒店

  • 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() )
                        )
                );
字典=
listaHoteisEncontrados
.GroupBy(x=>x.HotelId)
.ToDictionary(
g=>g.键,
g=>g
.GroupBy(e=>e.Room
.GroupBy(f=>f.RoomType).ToDictionary
(g2=>g2.Key,g2=>g2.Select(p=>p.RoomType.ToList())
)
);

没有成功。。有人能帮我吗?

这里有另一个可能的解决方案。我只是没有从列表中删除重复的房间..: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
    }
}
var dic=newdictionary();
foreach(listaHoteisEncontrados var酒店)
{
如果(!dic.CONTANSKEY(酒店Id))
{
dic.Add(酒店Id、酒店客房);
}
其他的
{
dic[hotel.Id].AddRange(hotel.Rooms);
//在这里删除重复的房间
}
}

您是否尝试过类似的方法?嗯。。这是有效的,不是一个好的解决办法。。因为我需要把所有的东西再读一遍,才能编出一本有独特的旅馆和房间的字典。。我想要一本词典Hi abbas,有一段时间我用这个解决方案做到了,但我确信在linq有办法做到。谢谢你,但是谢谢。我希望有人在linq有更好的解决方案