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

ASP.NET MVC中用LINQ替代SQL实现分组统计及数据展示

ASP.NET MVC 替换字符串SQL为LINQ并展示统计数据

1. 定义统计结果ViewModel

先创建ViewModel封装分组后的统计数据,让控制器能传递完整字段到视图:

public class XeQuaTramReportViewModel
{
    public string LoaiVe { get; set; }
    public string LoaiXe { get; set; }
    public decimal Phi { get; set; }
    public int TongXe { get; set; }
    public decimal TongPhi { get; set; }
}

2. 控制器中实现LINQ分组查询

在对应Action里用LINQ替代字符串SQL,完成分组统计逻辑:

public ActionResult Report()
{
    // 假设你的DbContext已包含View_XeQuaTramReport的DbSet
    var reportData = db.ViewXeQuaTramReports
                        .GroupBy(item => new { item.LoaiVe, item.LoaiXe, item.Phi })
                        .Select(group => new XeQuaTramReportViewModel
                        {
                            LoaiVe = group.Key.LoaiVe,
                            LoaiXe = group.Key.LoaiXe,
                            Phi = group.Key.Phi,
                            TongXe = group.Count(), // 统计每组车辆总数
                            TongPhi = group.Sum(item => item.Phi) // 计算每组总费用
                        })
                        .ToList();

    return View(reportData);
}

注意:如果原SQL中TongXe的统计逻辑不是计数(比如是某字段求和),请根据实际需求调整group.Count()为对应的聚合方法。

3. 视图展示统计数据

创建强类型视图,模型指定为List<XeQuaTramReportViewModel>,渲染所有统计字段:

@model List<XeQuaTramReportViewModel>

<h2>Báo cáo Xe Qua Trạm</h2>

<table class="table table-bordered">
    <thead>
        <tr>
            <th>Loại Vé</th>
            <th>Loại Xe</th>
            <th>Phí</th>
            <th>Tổng Xe</th>
            <th>Tổng Phí</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@Html.DisplayFor(modelItem => item.LoaiVe)</td>
                <td>@Html.DisplayFor(modelItem => item.LoaiXe)</td>
                <td>@item.Phi.ToString("C")</td>
                <td>@Html.DisplayFor(modelItem => item.TongXe)</td>
                <td>@item.TongPhi.ToString("C")</td>
            </tr>
        }
    </tbody>
</table>

这里用ToString("C")格式化金额为货币格式,可根据需求调整格式字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:15:23