C# asp.net mvc foreach多对多筛选器
查看我的代码:C# asp.net mvc foreach多对多筛选器,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,查看我的代码: @foreach (var item in Model._games) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) </td> <td> @foreach (var item2 in Model._day
@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(模型中的变量项。\u游戏)
{
@DisplayFor(modeleItem=>item.Title)
@foreach(模型中的var item2.\u days.Where(x=>x.Games.Any(u=>u.Id==item.Id)))
{
@项目2.截止时间;
}
@DisplayFor(modelItem=>item.Price)
}
显示second foreach并像我一样过滤它的正确方式是什么?如果我不进行筛选(仅使用模型。_days
,它会显示所有天数,但当我使用ID为的Where筛选器时,正如您在second foreach中看到的,它不会显示任何内容
谢谢可能的问题:1.您正在使用延迟加载,但忘记填充
模型的.Games
属性。\使用Include
方法(EF)或LoadWith
(LINQ 2 SQL)
2.游戏是空的
3.游戏不是空的,但您设置的筛选器不正确
4.您使用不正确的数据填充了Model.\u games
或Model.\u days.games
故障排除:在第二个foreach
设置断点,查看两个集合中的实际值。
- 将第二个foreach更改为
@foreach (var item2 in Model._days)
{
if(item2.Games.select(e=>e.Id).Cotains(item.Id)
{
@item2.CutOffTime;
}
}
在第二个集合中,我没有得到我所说的任何东西。。在第一个集合中,值是正确的。在第二个集合中,如果我不过滤,值是正确的。。这意味着过滤器是错误的。。这就是我问的原因。@JohnMathilda我能猜出u.id和item.id中有什么。如果有匹配的值,内部foreach必须迭代,其他方式不可能。错误为errroCS1579:foreach语句无法对“bool”类型的变量进行操作,因为“bool”不包含“GetEnumerator”的公共定义。