2011-11-13 7 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