c# - 如何在 Razor 视图页面上显示分组列表?
问题描述
我正在尝试在 Razor 视图页面上显示具有“foreach”语法的分组列表。我能怎么做?
I made list like this. It works.
*before you read this: 'columnName1' is string, 'ColumnName2' is double.
//控制器 - -
var list = db.xxx.where(x => x.ID == 92).ToList();
return View(list);
//view---
<table class="">
@foreach (var controllerName in modle)
{
<tr>
<td>@controllerName.ColumnName1</td>
<td>@controllerName.ColumnName2</td>
</tr>
}
我尝试在下面进行分组和求和。//控制器
var list = db.xxx.where(x => x.ID == 92).ToList();
var list1 = list
.GroupBy(y => y.columnName1)
.Select(group => new
{
columnName1 = group.Key,
columnName2 = group.Sum(x => x.columnName2)
})
.ToList();
return View(list1);
我希望显示带有分组和求和的列表。
//桌子
columnName1 | columnName2(sum result)
USA | 12
JAPAN | 10
解决方案
您需要为此创建一个视图模型类,因为现在,您正在将一个匿名对象传递给您的视图,这在技术上是可以使用的dynamic
,但我不鼓励这样做。如果你出错,强类型视图总是会给你编译时错误:
public class CountryViewModel
{
public string Name { get; set;}
public double Result {get; set;}
}
然后更改您的操作方法以将该类返回到视图:
var list1 = list.GroupBy(y => y.columnName1)
.Select(group => new CountryViewModel
{
Name = group.Key,
Result = group.Sum(x => x.columnName2)
})
.ToList();
return View(list1);
在您的视图中,将您的模型定义更改为该视图模型类
@model Namespace.To.Your.CountryViewModel
最后,您可以再次在 for each 循环中使用智能感知和模型绑定:
@foreach (var item in Model)
{
<tr>
<td>@item.Name</td>
<td>@item.Result</td>
</tr>
}
推荐阅读
- javascript - 在 Firestore 中获取查询的大小
- vim - 为什么“$d”命令在 vim 的 ex 模式下不起作用?
- java - 如何使用 java 从 Oracle 检索 Long
- c - 与 pl2303 的串行通信不可靠
- vb.net - 旧版本 vb 中使用的 adocom 问题
- javascript - "RequestAnimationFrame()" FPS = 显示刷新率?这会影响性能吗?
- django - 异常值:NOT NULL 约束失败:auth_user.username
- css - 打印页眉和页脚的媒体查询
- html - 如何在兄弟 div 留下的剩余空间中居中 div
- c++ - 谷歌 C++ 风格指南包括订单