Альтернатива foreach на странице C# Razor

Мне нужно вывести сложный HTML, содержащий IEnumerable, на странице Razor на сайте ASP.NET MVC 5.

Я хотел бы использовать вложенные циклы for для структурирования HTML - однако это невозможно, если весь вывод объекта заключен в цикл foreach.

Вместо того, чтобы использовать foreach цикл, есть ли способ сделать что-то вроде этого, что бы получить следующий объект в последовательности:

if (x = 1)
{
    for (var x=0; x<2; x++)
    {
        <div class="row">
            for (var n=0; n<4; n++)
            {
                <div class="a">
                    Model.GetNextObject.Name
                </div>
            }
        </div>
    }
}
else
{
    <div class="b">
        Model.GetNextObject.Name
    </div>
}

Во многих ситуациях это позволило бы создать более элегантный код.

Это возможно?

1 ответ

Решение

Да, это возможно,

  1. Получить ссылку на Enumerator с помощью GetEnumerator
  2. Вызовите метод movenext для перехода к следующему элементу

Обратитесь к этой публикации переполнения стека Использование IEnumerable с циклами for

var enumerator = getInt().GetEnumerator();
while(enumerator.MoveNext())
{
    var MyObject = enumerator.Current;
    Console.WriteLine(MyObject.Property);
}
Другие вопросы по тегам