如何在视图中显示列表中的每第n个项目?



我有一个用ASP构建的粗糙的天气仪表板。. NET Core和c# (MVC)。现在我让视图通过foreach循环显示来自API调用的数据:

@foreach (var forecast in Model.list)
{

<tr>

<td>@(TimeUtils.UnixTimeStampToDateTime(forecast.dt).ToLongDateString())</td>
<td>@forecast.main.temp_min F°</td>
<td>@forecast.main.temp_max F°</td>
<td>@forecast.main.temp F°</td>
<td>@forecast.main.feels_like</td>
</tr>

}

我想从API调用中显示的数据存储在模型中的列表中:

public class CityModel
{
public List<List> list { get; set; }
}

此列表提供5天内每3小时的天气数据。当foreach循环完成对List数据的迭代时,它在表中显示总共40个条目。

Weather forecast for Enid 
date                          min       max        temp        feels_like
Monday, October 18, 2021    68.99 F°    69.85 F°    68.99 F°    67.37
Monday, October 18, 2021    70.16 F°    72.52 F°    70.16 F°    68.52
Monday, October 18, 2021    66.36 F°    67.24 F°    67.24 F°    65.41
Monday, October 18, 2021    63.55 F°    63.55 F°    63.55 F°    61.54
Tuesday, October 19, 2021   60.76 F°    60.76 F°    60.76 F°    58.8
Tuesday, October 19, 2021   59.74 F°    59.74 F°    59.74 F°    57.76
cont...

我想知道的是如何让表每8个条目/索引显示一次(使其实际上成为每日预测),而不是每个条目/索引显示一次?我猜想它可能涉及到使用条件:

if( index % 8 == 0) {
<tr>

<td>@(TimeUtils.UnixTimeStampToDateTime(forecast.dt).ToLongDateString())</td>
<td>@forecast.main.temp_min F°</td>
<td>@forecast.main.temp_max F°</td>
<td>@forecast.main.temp F°</td>
<td>@forecast.main.feels_like</td>
</tr>
}

但除此之外,我是在黑暗中。

您可以创建一个仅由您想要显示的项目组成的新列表,例如:

var forecastList = Model.list.Where((x,i) => i % 8 == 0);
@foreach (var forecast in forecastList)

最新更新