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
相关产品推荐
相关产品推荐

