Как инвертировать вложение цикла? - PullRequest
1 голос
/ 13 ноября 2011

Упрощенный вопрос, это не домашняя работа.

В 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 Ответ

4 голосов
/ 13 ноября 2011
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;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...