2011-08-18 21 views
2

我需要在這裏嵌套LINQ的幫助。在這種情況下嵌套的LINQ查詢?如何創建一個嵌套的groupby?

我的情況是

我有

HotelId INT 列表

內室的名單上有一個roomid

我有酒店的重複的條目和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()) 
         ) 
       ); 

without sucess .. can any一個幫助我?

+0

您是否嘗試過類似的這種做法事http://blogs.msdn.com/b/mitsu/archive/2007/ 12月22日/播放與 - LINQ編組,groupbymany.aspx? – Josh

+0

以及..這工作,它不是一個很好的解決方案..因爲我需要再次讀所有的對象,使獨特的酒店和房間字典。 – Thiago

+0

你想要一個dictonary是Dictonary >? – msarchet

回答

1

這是另一種可能的解決方案。我只是沒有設法從列表中刪除重複的房間..: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 
    } 
} 
+0

嗨阿巴斯,acctualy一段時間我做了這個解決方案,但我確定有一種方法可以在linq做。但是,謝謝。我希望有人在linq有更好的解決方案 – Thiago