0

以下のコードを見てください。別のループ内に 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>

ここに画像の説明を入力

4

3 に答える 3

1

最終的なレイアウトで何を達成しようとしているのかは完全にはわかりませんが、画像から、仕様のヘッダーとすべてのラップトップオプションを表示する行に沿って何かを探していると思います. この場合、次のようなものが必要になります。

@foreach(var row in select){

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

    foreach(var rows in selects){

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

    } 
}
于 2012-08-04T17:36:26.713 に答える
1

内側のループは、外側のループの反復ごとに繰り返されます。ただし、foreach は 1 つしか気にせず、そのループ内では、リスト内のどこにいるのか実際にはわからないため、2 つのリストを同期的に反復することはできません (したがって、2 番目のリストと同期することはできません)。

可能な解決策:

1) select[s] にインデックスでアクセスできる場合は、1 つの for ループを使用して両方を反復処理します (同じ方法でソートされている場合)。

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

2)(投稿されたコードの前のコードで)複数の値を持つ1つの選択に削減しようとすると、必要なforeachループは1つだけです。

foreach (var row in select)
{
  ...
  @row.Specifications
  ...
  @row.LaptopOptions
  ...
}
于 2012-08-04T17:32:25.953 に答える
0

ラップトップオプションは複数の仕様を持つことができるため、内側のループは外側のループでなければなりません

          foreach(var rows in selects){
foreach(var row in select){
于 2012-08-04T17:35:52.563 に答える