2011-11-13 85 views
1

簡化了這個問題,這不是作業。如何反轉循環嵌套?

List<Room>中,每個房間都有這個房間的人數。目前,我正在打印ROOM_ID +爲person_id像這樣:

foreach(var room in List<Room>) 
{ 
    for(var i=0;i<room.numberOfPpl;i++) 
    { 
     Console.Write(string.Format("room_id={0} person_id={1}",room.id,i)) 
    } 
} 

輸出:room_id=1 person_id=1, room_id=1 person_id=2, room_id=1 person_id=3 ...

現在,我的要求是整個循環房間第一:

輸出:room_id=1 person_id=1, room_id=2 person_id=1, room_id=3 person_id=1, room_id=1 person_id=2 ...

感謝。

回答

4
var maxNoPpl = rooms.Max(room=>room.numberOfPpl); 
for(var i=0;i<maxNoPpl ;i++) 
{ 
    foreach(var room in rooms) 
    { 
     if (i < room.maxNoPpl) 
     { 
      Console.Write(string.Format("room_id={0} person_id={1}",room.id,i)) 
     } 
    } 
} 

這並不是說這需要using System.Linq;

+0

+1,打我吧。 –

+0

非常感謝! – eugeneK