C# 在ASP.NETMVC中的X个项目之后水平重复项目

C# 在ASP.NETMVC中的X个项目之后水平重复项目,c#,asp.net,.net,asp.net-mvc,linq,C#,Asp.net,.net,Asp.net Mvc,Linq,我有一个菜单的局部视图,它呈现这样的菜单 @helper RenderNav(CategoryViewModel item) { if (item.ChildCategories.Any()) { <div class="link-block"> <ul> @foreach (var sub in item.ChildCategories) {

我有一个菜单的局部视图,它呈现这样的菜单

@helper RenderNav(CategoryViewModel item)
{

    if (item.ChildCategories.Any())
    {
        <div class="link-block">
            <ul>
                @foreach (var sub in item.ChildCategories)
                {
                    <li><a href="#"><i class="icon-angle-right"></i> @sub.Name</a></li>
                    @RenderNav(sub);
                }
            </ul>
        </div>


    }
}
@foreach (var item in Model)
{
    <li>
        <a href="#" class="label">@item.Name<i class="icon-chevron-down"></i></a>
        <ul class="one" id="links">
            <li>
                @RenderNav(item)
            </li>
        </ul>
    </li>
}
@helper RenderNav(类别视图模型项)
{
if(item.ChildCategories.Any())
{
    @foreach(ChildCategories中的var子项) {
  • @伦德纳夫(小组); }
} } @foreach(模型中的var项目) {
    • @RenderNav(项目)
  • }

    然而,生成的HTML总是在一行中重复,但是我希望在修复后将项目移动到下一列,例如3个项目,这样重新筛选的项目应该像这样显示;

    
    
    然而,目前的情况是

    <div class="link-block">
        <ul>
            <li><a href="#"><i class="icon-angle-right"></i> Menu 1</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 2</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 3</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 4</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 5</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 6</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 7</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 8</a></li>
         <li><a href="#"><i class="icon-angle-right"></i> Menu 9</a></li>
        </ul>
    </div>
    
    
    

    这里有一个
    IEnumerable
    扩展方法,它采用
    源代码
    ,比如
    [a,B,C,D,E,F,G,H]
    groupSize
    为3,并返回
    [[a,B,C],[D,E,F],[G,H]

    static IEnumerable<IEnumerable<T>> GroupSequential(
        this IEnumerable<T> source, int groupSize)
    {
        return source
            .Select((x, i) => new { x, i })
            .GroupBy(t => t.i / groupSize)
            .Select(g => g.Select(t => t.x));
    }
    
    静态IEnumerable GroupSequential(
    此IEnumerable源,int groupSize)
    {
    返回源
    .Select((x,i)=>new{x,i})
    .GroupBy(t=>t.i/groupSize)
    .Select(g=>g.Select(t=>t.x));
    }
    
    现在,不要这样做:

    <ul>
    @foreach (var item in Model)
    {
        <li>...render item...</li>
    }
    </ul>
    
      @foreach(模型中的var项目) {
    • …呈现项目
    • }
    这样做:

    <table>
    @foreach (var row in Model.GroupSequential(3))
    {
        <tr>
        @foreach (var item in row)
        {
            <td>...render item...</td>
        }
        </tr>
    }
    </table>
    
    
    @foreach(Model.GroupSequential(3)中的var行)
    {
    @foreach(行中的var项目)
    {
    …呈现项目。。。
    }
    }
    
    <table>
    @foreach (var row in Model.GroupSequential(3))
    {
        <tr>
        @foreach (var item in row)
        {
            <td>...render item...</td>
        }
        </tr>
    }
    </table>