首页 > 解决方案 > 如果项目不存在,则 C# foreach 循环跳过它

问题描述

我有一个像这样的循环:

@foreach(var elevation in inventory.Elevations)
{
     <td>@elevation.Title</td>
}

现在我的inventory.Elevations 可能有3 或4 件物品,不会多或少。

标题可以是“A”、“B”、“C”或“D”。例如,一个库存。海拔可能有 A、C 和 D 但不是 B,而另一个可能有 B、C、D 但不是 A,而另一个可能有 A、B、D 但不是 C。如果是这种情况,我会喜欢显示<td>&nbsp;</td>我将如何做到这一点?我什至不知道该怎么做才能做到这一点。

标签: c#asp.net

解决方案


将一个列表中的所有高程定义为var elevations = new List<string>() { "A", "B", "C", "D" };。循环遍历每一个并检查您的inventory.Elevations. 如果找到然后获取Titleelse &nbsp;。完整的代码如下。

@{
    // Set all your elevations
    var elevations = new List<string>() { "A", "B", "C", "D" };
}

@foreach(var e in elevations)
{
    <td>@(inventory.Elevations.FirstOrDefault(x => x.Title == e)?.Title ?? "&nbsp;")</td>
}

或者您可以添加具有elevations.Contains如下条件的三元。

@{
    // Set all your elevations
    var elevations = new List<string>() { "A", "B", "C", "D" };
}

@foreach(var elevation in inventory.Elevations)
{
    <td>@(elevations.Contains(elevation.Title) ? elevation.Title : "&nbsp;")</td>
}

推荐阅读