我一直想问这个问题。让我们说在C#中我有一个IEnumerable<Cars>
,它包含20个来自我的SQL数据库的LINQ查询的结果。
我想使用ul
标记将其列为4列中的5列。我通常最终会做的是开始第一个ul
,然后foreach
通过可枚举,在% 5 == 0
ul
关闭foreach
并开始新的时候保留一个计数器一个......在ul
之后,添加最终结算{{1}}。
有更好的方法吗?
答案 0 :(得分:5)
您可以使用GroupBy()
按照您想要的方式将汽车分组在一起,在您的情况下,将5辆车组合在一起(使用整数除法,因此索引为0到4的汽车将在第1组中,第2组中的索引5到9等):
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>
}