嵌套的foreach循环停止重复

时间:2012-08-04 17:17:00

标签: c# asp.net-mvc razor foreach

请看下面的代码。我在另一个中有一个foreach循环,但是当我运行页面行重复时。有没有办法停止重复行。 这是代码和结果:

![<div class="itemContent">
<table cellspacing="0" cellpadding="0" class="productspecstable" style="float: right">
    <tbody>
        <!-- B:07L -->
        @foreach(var row in select)
        {
            foreach(var rows in selects)
            {
                <tr>
                    <td>@rows.Specifications</td>
                    <th>@row.LaptopOptions</th>
                </tr>
            } 
        }
   </tbody>
</table>
</div>

enter image description here

3 个答案:

答案 0 :(得分:1)

对于外循环的每次迭代,重复内循环。但是,你不能在两个列表上同步迭代,因为foreach只关心一个,在那个循环中,你真的不知道列表中的位置(所以你不能与第二个列表同步)。

可能的解决方案:

1)如果可以使用索引访问select [s],则使用一个for循环迭代两者(假设它们以相同的方式排序):

for(int idx=0;idx<select.Count;idx++)
{
  ...
  @select[idx].Specifications
  ...
  @selects[idx].LaptopOptions
  ...
}

2)尝试使用多个值(在发布代码之前的代码中)减少到一个选择,然后您只需要一个foreach循环:

foreach (var row in select)
{
  ...
  @row.Specifications
  ...
  @row.LaptopOptions
  ...
}

答案 1 :(得分:1)

我不完全确定你在最终布局中想要达到的目标,但是从你的形象来看,我认为你正在寻找一些类似于规范标题然后所有笔记本电脑的东西。选项。如果是这种情况,那么你需要这样的东西:

@foreach(var row in select){

    <tr>
        <th>@row.LaptopOptions</th>
    </tr>

    foreach(var rows in selects){

        <tr>
            <td>@rows.Specifications</td>
        </tr>

    } 
}

答案 2 :(得分:0)

内部循环必须是你的外部循环,因为笔记本电脑选项可以有多个规范

          foreach(var rows in selects){
foreach(var row in select){