在循环数据时制作列表列?

Cha*_*eus 1 c# ienumerable loops modulo

我一直想问这个.让我们说在C#中我有一个IEnumerable<Cars>包含20个LINQ查询到我的SQL数据库的结果.

我想使用ul标签将其列为4列5列.我通常最终做的是开始第一个ul,然后foreach通过可枚举,保持一个计数器,当% 5 == 0我关闭a ul并开始一个新的...之后foreach,添加一个最终结束ul.

有一个更好的方法吗?

Bro*_*ass 5

您可以使用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>
    }
Run Code Online (Sandbox Code Playgroud)