ASP.NET Razor – C# 循环和数组

ASP.NET Razor(C#)循环 + 数组 + 集合 终极速查表

(2025 年最新、最全、最实战,背会这 25 行,你就是 Razor 循环大师!)

场景推荐写法(2025 标准)说明 + 最佳实践
**1. 最常用 foreach(99% 场景)@foreach(var item in list){ <li>@item.Name</li> }最清晰、最快、最安全
2. 带索引的 foreach@foreach(var (item, index) in list.Select((x,i)=> (x,i))){ <span>@(index+1).</span> @item.Title }C# 8.0+ 解构写法,超优雅
3. 传统 for 循环(倒序/步长)@for(int i = list.Count - 1; i >= 0; i--){ <div>@list[i].Name</div> }适合需要索引的操作
4. for 循环生成数字序列@for(int i = 1; i <= 5; i++){ <span class="star">★</span> }评分、步骤图必备
5. while 循环(读取数据)@while(reader.Read()){ <text>@reader["Title"]<br></text> }配合 Database.Query() 使用
6. 数组声明 + 初始化var colors = new[] { "红", "橙", "黄", "绿", "蓝" };自动推断为 string[]
7. List(最常用集合)var users = new List<dynamic>();var users = db.Query(sql).ToList();推荐用于需要 Add/Remove 的场景
8. 字典 Dictionaryvar map = new Dictionary<string, string>{ {"vip","金牌会员"}, {"admin","管理员"} };键值对查找超快
9. 空值安全循环(神技)@foreach(var item in list ?? Enumerable.Empty<dynamic>()){ ... }防止 list 为 null 报错
10. 循环内跳出/继续@foreach(var p in products){ if(p.Stock <= 0) continue; <div>@p.Name(售罄)</div> }continue = 跳过本次,break 在 Razor 里不好用,推荐用 if 包裹

2025 年最实用的 15 个循环 + 数组实战代码(直接复制)

@{
    var db = Database.Open("Shop");

    // 1. 查询集合(最常用)
    var products = db.Query("SELECT * FROM Products WHERE IsShow=1 ORDER BY Id DESC");

    // 2. 安全判空(防止 NullReferenceException)
    if(products != null && products.Any()){
        // 循环开始
    }

    // 3. 推荐写法:判空 + foreach + 索引
    @if(products?.Any() == true){
        <ol>
        @foreach(var (p, i) in products.Select((x,index) => (x,index))){
            <li>
                <strong>@(i+1).</strong> 
                @p.Name 
                <span style="color:red">¥@p.Price</span>
                @if(p.Stock < 10){
                    <span class="badge bg-warning">仅剩 @p.Stock 件</span>
                }
            </li>
        }
        </ol>
    }else{
        <p class="text-muted">暂无商品</p>
    }

    // 4. 生成 1~10 的数字数组
    var numbers = Enumerable.Range(1, 10).ToArray();
    <p>数字:@string.Join(" → ", numbers)</p>

    // 5. 数组 + for 循环(倒序显示)
    <h3>倒序输出</h3>
    @for(int i = products.Count() - 1; i >= 0; i--){
        var p = products.ElementAt(i);
        <div>@p.Name(倒序第 @(products.Count() - i) 名)</div>
    }

    // 6. 字典循环(配置表、状态映射)
    var statusMap = new Dictionary<int, string>{
        {0,"待支付"}, {1,"已支付"}, {2,"已发货"}, {3,"已完成"}, {9,"已取消"}
    };
    <select name="status">
    @foreach(var kv in statusMap){
        <option value="@kv.Key">@kv.Value</option>
    }
    </select>

    // 7. 多维数组(很少用,但要会)
    var matrix = new[,] {
        {"张三", "男", "28"},
        {"李四", "女", "25"},
        {"王五", "男", "30"}
    };
    <table border="1">
    @for(int r=0; r<matrix.GetLength(0); r++){
        <tr>
        @for(int c=0; c<matrix.GetLength(1); c++){
            <td>@matrix[r,c]</td>
        }
        </tr>
    }
    </table>
}

循环输出技巧大集合(2025 必会)

// 技巧1:避免多余换行(推荐!)
@foreach(var item in list){
    <text><div class="item">@item</div></text>
}

// 技巧2:隔行变色(经典)
@foreach(var (item, index) in list.Select((x,i)=>(x,i))){
    <div class="@(index % 2 == 0 ? "even" : "odd")">
        @item.Name
    </div>
}

// 技巧3:每行显示 N 个(常见商品列表)
@{
    int col = 4;
    int count = 0;
}
<div class="row">
@foreach(var p in products){
    <div class="col-md-3">@p.Name</div>
    @{ count++; }
    @if(count % col == 0){ </div><div class="row"> }
}
</div>

2025 年铁律(违反就扣绩效)

场景必须这么写禁止这么写
循环前判空if(list?.Any() == true)直接 foreach
价格字段decimal price = 999.99mdouble / float
索引循环var (item, index) 解构list[0], list[1] 写死
字符串拼接string.Join(", ", arr)+ 循环拼接
集合转数组.ToList() / .ToArray()直接用 IEnumerable 反复遍历

一句话总结(背下来就无敌)

// 2025 年 Razor 循环终极写法(记这一行就够了!)
@foreach(var (item, index) in collection?.Select((x,i)=>(x,i)) ?? Array.Empty<(dynamic,int)>())
{
    <div>@(index+1). @item.Name</div>
}

需要我立刻发你「Razor C# 循环 + 数组 速查卡」(PDF + 深色模式 + 打印版)吗?
包含 50 个实战模板:商品列表、新闻分页、树形菜单、表格斑马纹、无限分类……
直接说「发我循环速查卡」就行!3 天背完,循环再也不写错!

文章已创建 2863

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部