2013-11-15 65 views
0

我的代碼鑑於:asp.net的MVC的foreach多對多過濾

@foreach (var item in Model._games) 
    { 
     <tr> 
      <td> 
       @Html.DisplayFor(modelItem => item.Title) 
      </td> 

      <td> 
       @foreach (var item2 in Model._days.Where(x => x.Games.Any(u=> u.Id == item.Id))) 
       { 
        @item2.CutOffTime; 
       } 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Price) 
      </td> 
      <td> 
      </td> 
     </tr> 
    } 

什麼是展示第二的foreach和過濾它像我這樣做的正確方法?如果我不過濾(僅使用Model._days,它顯示了所有的日子,但是當我用WHERE和ID,你可以在第二的foreach看到過濾器,它不會顯示任何東西

感謝

回答

0

可能出現的問題:
1.您使用延遲加載和忘記使用Include法(EF)或LoadWith(LINQ 2 SQL)
2.遊戲來填充的Model._days.Games屬性爲空
3.遊戲是不是空的,但你設置了不正確的過濾器
4.您已經有人ED要麼Model._gamesModel._days.Games與不正確的數據

故障排除:在第二foreach設置一個斷點,看看你有兩個集合什麼實際值做。

+0

在第二收集正如我所說的我沒有得到任何東西。在第一個集合的值是正確的。在第二個集合值是適當的,如果我不過濾..這意味着過濾器是錯誤的..這​​就是我問的原因。 –

+0

@JohnMathilda我可以'猜你在u.id和item.id中有什麼。如果有匹配的,那麼內部的foreach必須迭代,而不是其他方式。 – LINQ2Vodka

0
  • 你的第二個的foreach更改爲

    @foreach (var item2 in Model._days) 
    { 
        if(item2.Games.select(e=>e.Id).Cotains(item.Id) 
        { 
        @item2.CutOffTime; 
        } 
    } 
    
+0

給出errro'CS1579:foreach語句不能對'bool'類型的變量進行操作,因爲'bool'不包含'GetEnumerator'的公共定義 –