如何将MultiSelectList拆分为n个项目,并使用标记包装每个分区的项目组

时间:2012-12-20 00:38:14

标签: c# asp.net-mvc-3 linq

有没有很好的方法来分解下面的multiSelectList并包装n个项目?可能使用一些linq扩展名?

例如,在< div>中一次包装4个项目。在将它添加到divTag.InnerHtml之前?显然必须首先检查是否有足够的物品?

foreach (SelectListItem item in multiSelectList)
{
    divTag.InnerHtml += String.Format("<label for=\"{0}_{1}\">{3}" +
                                      "<input type=\"checkbox\" name=\"{0}\" id=\"{0}_{1}\" value=\"{1}\" {2} />" +
                                      "</label>",
                                      propertyName,
                                      item.Value,
                                      selectedValues.Contains(item.Value) ? "checked=\"checked\"" : "",
                                      item.Text);
}

1 个答案:

答案 0 :(得分:1)

MoreLINQ(在NuGet上搜索它)具有扩展名Batch,允许您从任何序列进行批处理。也许这就是你要找的东西。

foreach(var batch in multiSelectList.Batch(4))
{
   // every batch will contain 4 items (well, except last one possibly)
   foreach(SelectListItem item in batch)
   {
       //...
   }
}
相关问题