如何反转循环嵌套?

时间:2011-11-13 12:55:28

标签: c# loops

简化问题,这不是作业。

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 ...

感谢。

1 个答案:

答案 0 :(得分: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;