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

如何在ASP.NET Core视图的@foreach循环内获取迭代序号

ASP.NET Core Razor 视图循环获取迭代序号的实现方案

方案1:使用.NET内置LINQ带索引的Select重载(推荐)

这是你要找的内置实现方案,不需要手动维护计数变量,只要是IEnumerable类型的集合都可以使用,原理是用Select扩展方法的重载同时返回元素和对应的下标索引:

@foreach (var (item, index) in l_IEnumerableModUserQuery.Select((item, idx) => (item, idx)))
{
    <tr>
        <td> 
            @* 下标默认从0开始,需要从1计数的话加1即可 *@
            @(index + 1)
        </td>
        <td>
            <a href="#">
                @item.Pr_FullName
            </a>
        </td>
        <td>@item.Pr_Email</td>
        <td>@item.Pr_ContactNo</td>
    </tr>
}

如果你的项目是较低版本不支持元组解构,可以用匿名类型实现:

@foreach (var entry in l_IEnumerableModUserQuery.Select((item, idx) => new { Item = item, Index = idx }))
{
    <tr>
        <td>@(entry.Index + 1)</td>
        <td>@entry.Item.Pr_FullName</td>
        <td>@entry.Item.Pr_Email</td>
        <td>@entry.Item.Pr_ContactNo</td>
    </tr>
}

方案2:外部定义计数变量(兼容所有版本)

也就是你调研到的传统方案,兼容性最强,适合所有.NET版本:

@{ 
    // 从1开始计数就初始化为1,从0开始就设为0
    int iterationIndex = 1; 
}
@foreach (var item in l_IEnumerableModUserQuery)
{
    <tr>
        <td> 
            @iterationIndex
        </td>
        <td>
            <a href="#">
                @item.Pr_FullName
            </a>
        </td>
        <td>@item.Pr_Email</td>
        <td>@item.Pr_ContactNo</td>
    </tr>
    // 每次循环结束计数自增
    iterationIndex++;
}

方案3:转换为IList用for循环

如果你的集合可以转换为IList类型(如数组、List等),直接用for循环遍历天然带索引,性能最优:

@{ 
    var userList = l_IEnumerableModUserQuery.ToList(); 
}
@for (int i = 0; i < userList.Count; i++)
{
    var item = userList[i];
    <tr>
        <td>@(i + 1)</td>
        <td>
            <a href="#">
                @item.Pr_FullName
            </a>
        </td>
        <td>@item.Pr_Email</td>
        <td>@item.Pr_ContactNo</td>
    </tr>
}

内容的提问来源于stack exchange,提问作者Muzammil Ismail

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:54:04