C# 在Razor中循环浏览模型内容
我想在razor视图中循环浏览模型中的每个项目,但我想将所有项目分组在一起。然后我想在每组之间循环。假设我有一张桌子:C# 在Razor中循环浏览模型内容,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我想在razor视图中循环浏览模型中的每个项目,但我想将所有项目分组在一起。然后我想在每组之间循环。假设我有一张桌子: ID GroupNo GroupName 1 1 Group1 2 1 Group2 3 1 Group3 4 2 Group1 5 2 Group2 6 3 Group56 我想做一些类似的事情: @foreach (va
ID GroupNo GroupName
1 1 Group1
2 1 Group2
3 1 Group3
4 2 Group1
5 2 Group2
6 3 Group56
我想做一些类似的事情:
@foreach (var group in Model.GroupNo) {
<section>
<header>Group No is @group.GroupNo</header>
@foreach (var item in group) {
<p>GroupName: @item.GroupName</p>
}
</section>
}
这可能吗
谢谢是的,使用Linq
GroupBy
很容易做到这一点。我建议将视图更改为使用@model IEnumerable
,您可以这样填充:
var groupModel = MyModelCollection.GroupBy(item => item.GroupNo).ToArray();
return View(groupModel);
然后,只需在编写时遍历组,除了使用group.Key
而不是group.GroupNo
检索iGroup的键外:
@foreach (var group in Model) {
<section>
<header>Group No is @group.Key</header>
@foreach (var item in group) {
<p>GroupName: @item.GroupName</p>
}
</section>
}
@foreach(模型中的变量组){
组号为@Group.Key
@foreach(组中的var项目){
GroupName:@item.GroupName
}
}
LINQ可以帮助您做到这一点
@model IEnumerable<Project1.Models.Group>
@foreach (var item in Model.Select(i=>i.groupno).Distinct().ToList()) {
<tr>
<td>
<header>Group No is @item</header>
@foreach (var grpName in Model.Where(i => i.groupno == item).ToList())
{
<p>GroupName: @grpName.groupName</p>
}
</td>
</tr>
}
@model IEnumerable
@foreach(Model.Select(i=>i.groupno.Distinct().ToList()中的var项){
组号为@item
@foreach(Model.Where(i=>i.groupno==item.ToList()中的var grpName)
{
GroupName:@grpName.GroupName
}
}
@{
布局=空;
}
指数
@{
String[]name={“Prashant”、“Rishabh”、“Zaheer”、“Pratima”、“Rahul”};
int i=1;
虽然(我曾经尝试过提供与Razor代码(乍一看是有效的)期望相匹配的模型数据结构?GroupNo绝对不是IEnumerable,对吧?我在问,因为你正在做一个foreach,它工作得非常完美!!:)非常感谢这太棒了,但如何将其传递回控制器?此逻辑为我节省了大量时间..谢谢!如果您需要将分组代码完全保留在您的视图中,这是一个很好的方法。
@model IEnumerable<Project1.Models.Group>
@foreach (var item in Model.Select(i=>i.groupno).Distinct().ToList()) {
<tr>
<td>
<header>Group No is @item</header>
@foreach (var grpName in Model.Where(i => i.groupno == item).ToList())
{
<p>GroupName: @grpName.groupName</p>
}
</td>
</tr>
}
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@{
String[] name = {"Prashant", "Rishabh", "Zaheer", "Pratima", "Rahul"};
int i = 1;
while (i <= 5)
{
foreach(var x in name)
{
<p>@i. @x</p>
i++;
};
break;
}
}
</div>
</body>
</html>
O/p-
1. Prashant
2. Rishabh
3. Zaheer
4. Pratima
5. Rahul