Создание списка столбцов во время цикла данных? - PullRequest
1 голос
/ 28 марта 2011

Я всегда хотел спросить это. Допустим, в C # у меня есть IEnumerable<Cars>, который содержит 20 результатов запроса LINQ к моей базе данных SQL.

Я хочу перечислить его в 4 столбца по 5, используя теги ul. Что я обычно делаю, так это запускаю сначала ul, затем foreach через перечислимое, сохраняю счетчик внутри, когда он % 5 == 0 закрывает ul и запускаю новый ... после foreach, добавьте окончательное закрытие ul.

Есть ли лучший способ сделать это?

1 Ответ

5 голосов
/ 28 марта 2011

Вы можете использовать GroupBy() для группировки автомобилей так, как вы хотите их представить, в вашем случае есть группы из 5 автомобилей вместе (с использованием целочисленного деления, чтобы автомобили с индексами от 0 до 4 были в группе 1, индекс 5).до 9 в группе 2 и т. д.):

 List<Car> cars = new List<Car>();
 //populate cars

 var carGroups = cars.Select((car, index) => new { Index = index, Car = car })
                     .GroupBy(x => x.Index / 5)
                     .Select(g => g.Select(x => x.Car).ToList())
                     .ToList();

    foreach (var group in carGroups)
    {
        //Emit <UL>
        foreach (var car in group)
        {
            //Emit <LI> with car details
        }
        //Emit </UL>
    }
...