c# - C# 在 for 循环中创建一个新列表,而不是在其上展开
问题描述
我在 MVC 中工作并且有一个看起来像这样的视图
//UPDATED
@foreach (Site s in sites)
{
<tr style="color:black">
@foreach (var col in ViewBag.OffReportColumns)
{
<th>@col </th>
}
</tr>
<tr style="color:black">
@foreach (var cell in ViewBag.OffReportRows)
{
<td>@cell</td>
}
</tr>
<tr style="font-size: 20px">
@foreach (var cell in ViewBag.OffReportTotal)
{
<td>@cell</td>
}
</tr>
}
还有一个看起来像这样的控制器方法
List<string> OffReportColumns = new List<string>(7);
List<List<string>> OffReportRows = new List<List<string>>();
List<List<string>> OffReportTotal = new List<List<string>>();
foreach (Site s in sites)
{
OffReportColumns.Add(s.Name);
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost");
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost With Labour");
OffReportRows.Add(new List<string>
{
"Parts",
"",
"",
osiPartCost[s.ID].ToString("C2"),
"",
"",
osiPartCost[s.ID].ToString("C2")
});
OffReportRows.Add(new List<string>
{
"",
"600000 series",
osiOpc6[s.ID].ToString("C2"),
"",
"600000 series",
osiOpc6[s.ID].ToString("C2"),
""
});
OffReportRows.Add(new List<string>
{
"",
"700000 series",
osiOpc7[s.ID].ToString("C2"),
"",
"700000 series",
osiOpc7[s.ID].ToString("C2"),
""
});
OffReportRows.Add(new List<string>
{
"",
"800000 series",
osiOpc8[s.ID].ToString("C2"),
"",
"800000 series",
osiOpc8[s.ID].ToString("C2"),
""
});
OffReportRows.Add(new List<string>
{
"Tools",
"",
"",
osiTools[s.ID].ToString("C2"),
"",
"",
osiTools[s.ID].ToString("C2"),
});
OffReportRows.Add(new List<string>
{
"",
"900000 series",
osiOpc9[s.ID].ToString("C2"),
"",
"900000 series",
osiOpc9[s.ID].ToString("C2"),
""
});
OffReportRows.Add(new List<string>
{
"",
"Other",
osiOpco[s.ID].ToString("C2"),
"",
"Other",
osiOpco[s.ID].ToString("C2"),
""
});
OffReportRows.Add(new List<string>
{
"Components",
"",
"",
osiCompCost[s.ID].ToString("C2"),
"",
"",
osiLoCompCost[s.ID].ToString("C2")
});
OffReportRows.Add(new List<string>
{
"Items",
"",
"",
osiItemCost[s.ID].ToString("C2"),
"",
"",
osiLoItemCost[s.ID].ToString("C2")
});
OffReportTotal.Add(new List<string>
{
"Total",
"",
"",
osiTotal[s.ID].ToString("C2"),
"",
"",
osiFltotal[s.ID].ToString("C2")
});
ViewBag.OffReportRows = OffReportRows;
ViewBag.OffReportColumns = OffReportColumns;
ViewBag.OffReportTotal = OffReportTotal;
}
这是我的网站模型
public class Site
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string Province { get; set; }
public string PostalCode { get; set; }
}
我的“站点”表中有 5 个站点。我的目标是为每个站点创建一个表。现在这就是正在发生的事情
如您所见,列运行正常,而不是为每个表创建它们。您还可以看到“OffReportTotals”似乎不存在。问题是它们都在页面底部附近打印,所以看起来像这样
我知道每次迭代循环时它只会使列表变长,而实际上并不是每次都创建一个新列表。但是我怎样才能做到这一点,而不是扩展到列表,它只是在每次循环时创建一个新列表。
解决方案
推荐阅读
- c# - ASP.NET Razor MVC Core WebApplication - 会话问题
- kubernetes - 如何控制 RollingUpdate 的速度
- html - WordPress页面留下太多空间
- android - 使用协程处理文件操作
- html - 如何在 Jupyter Notebook 上的 Jupyter 小部件上显示视频
- android - 如何修复配置“编译”已过时,已被“实现”和“API”取代。将于 2018 年底移除
- c++ - VoltDB pass 在一次调用中执行多个插入,C++ API
- python - 将结果写入python中的文本文件
- pixi.js - pixiJS 画布大小是否有限制
- angular - 基于角色在同一路径上延迟加载模块