You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC视图中如何展示List集合中每第N个(如第8个)元素

实现ASP.NET Core MVC天气仪表盘单日预报的方法

你可以通过以下两种方式实现仅展示每第8条记录的需求:

方法1:在for循环中直接判断索引(最直观)

直接将原有foreach替换为带索引的for循环,在循环内添加你提到的模运算判断即可,Razor代码如下:

@for (int i = 0; i < Model.list.Count; i++)
{
    // 索引从0开始计数,i%8==0对应第1、9、17...条记录,刚好匹配5天的单日数据
    if (i % 8 == 0) 
    {
        var forecast = Model.list[i];
        <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>
    }
}

如果你需要调整取每日的其他时段(比如中午时段),只需要把i%8 == 0中的0改为0-7之间的对应数值即可。

方法2:提前过滤集合(代码更简洁)

你可以借助LINQ的Where重载方法,先过滤出符合要求的记录再遍历,不需要在循环内写判断:

<!-- 先过滤出每第8条记录 -->
@{
    var dailyForecasts = Model.list.Where((forecast, index) => index % 8 == 0).ToList();
}

<!-- 直接遍历过滤后的集合 -->
@foreach (var forecast in dailyForecasts)
{
    <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返回时段偏移的问题,直接按索引取可能出现日期错位,你可以按日期分组统计单日数据,展示的结果更准确:

@foreach (var dayGroup in Model.list.GroupBy(f => TimeUtils.UnixTimeStampToDateTime(f.dt).Date))
{
    // 统计当日最高/最低温,取中午12点左右的记录作为当日温度代表
    var dayMinTemp = dayGroup.Min(f => f.main.temp_min);
    var dayMaxTemp = dayGroup.Max(f => f.main.temp_max);
    var noonForecast = dayGroup.OrderBy(f => TimeUtils.UnixTimeStampToDateTime(f.dt).Hour)
                               .FirstOrDefault(f => TimeUtils.UnixTimeStampToDateTime(f.dt).Hour >= 12) 
                               ?? dayGroup.First();
    <tr>
        <td>@dayGroup.Key.ToLongDateString()</td>
        <td>@dayMinTemp F°</td>
        <td>@dayMaxTemp F°</td>
        <td>@noonForecast.main.temp F°</td>
        <td>@noonForecast.main.feels_like</td>
    </tr>
}

内容的提问来源于stack exchange,提问作者Adam Cushing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:18:01