c# - 在 C# 的 for 循环中从列表中获取数据
问题描述
我正在尝试循环浏览列表并为列表中的每个站点创建一个新表
我的控制器看起来像这样
List<string> OffReportColumns = new List<string>(7);
List<List<string>> OffReportRows = 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")
});
}
我的视图看起来像这样
@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>
}
但我相反希望它被布局,所以它看起来像这样
"Eric Car Stock " "Average Cost" "Average Cost with Labour"
"In-House Use " "Average Cost" "Average Cost with Labour"
"Havey Kuhar's Car Stock " "Average Cost" "Average Cost with Labour"
每个表下面都有与其站点对应的数据
我怎样才能改变我的代码来完成这个?
我试过的
在我看来,我首先尝试让我的代码执行此操作
//Removed for foreach (Site s in sites)
@foreach (var row in ViewBag.OffReportRows)
<tr style="color:black">
@foreach (var cell in ViewBag.OffReportRows)
{
<td>@cell</td>
}
</tr>
}
但这只会扩展列表而不是创建新列表
解决方案
在第一个代码片段中,所有网站的所有列都添加到一个列表中。2 维正在变成 1 维。没有循环,它有效地写成
OffReportColumns.Add("Eric Car Stock ");
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost");
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost With Labour");
OffReportColumns.Add("In-House Use ");
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost");
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost With Labour");
OffReportColumns.Add("Havey Kuhar's Car Stock ");
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost");
OffReportColumns.Add("");
OffReportColumns.Add("");
OffReportColumns.Add("Average Cost With Labour");
第二个代码片段说,“对于每个站点,其中有 3 个,创建一个表格行。在每一行中,对于每个 OffReportColumns,其中有 21 个,创建一个包含来自内部循环的文本的表格列。
这就是为什么所有站点的所有列都出现在 3 行中的每一行上。
更好的方法是根本没有OffReportColumns
列表。相反,视图可以这样写
@foreach (Site s in sites)
{
<tr>
<td>@s.Name</td>
<td></td>
<td></td>
<td>Average Cost</td>
<td></td>
<td></td>
<td>Average Cost With Labour</td>
</tr>
}
这将为每个站点创建一行 7 列。每行的第一列将是站点的名称。
推荐阅读
- php - Laravel 5.6 无法访问某些 .env 变量
- r - 在R中按行计算2个值之间的NA数
- dart - 在颤动中编码时如何在BottomNavigationBar中显示3个以上的项目
- ios - 如何在 kotlin 中启动 ios 应用程序的项目?在哪个工具中?
- nginx - 如何处理不同服务器中的静态文件
- json - GSON:当键是响应的一部分时解析 JSON
- nuxt.js - nuxt js 在本地构建,并在生产服务器上运行
- php - MySQL用户名列在一个表内的一个字段中以查询另一个表并返回用户结果
- ios - 以编程方式快速标记 NSMutableAttributedString 4
- rest - 消息驱动 bean 的健康检查 API