为了账号安全,请及时绑定邮箱和手机立即绑定

在 C# 的 for 循环中从列表中获取数据

在 C# 的 for 循环中从列表中获取数据

喵喵时光机 2023-09-18 10:54:18
我正在尝试循环浏览列表并为列表中的每个站点创建一个新表我的控制器看起来像这样 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"每个表下面都有与其站点相对应的数据我如何更改我的代码来实现此目的?
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

在第一个代码片段中,所有站点的所有列都添加到一个列表中。二维正在变成一维。如果没有循环,它实际上可以写成


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 列。每行的第一列将是站点的名称。


查看完整回答
反对 回复 2023-09-18
?
当年话下

TA贡献1890条经验 获得超9个赞

正如您在评论中所述,有两列是静态数据,唯一的动态数据是网站可以简单地循环抛出网站并显示它们,如下所示


    @foreach (Site s in sites)

    {

        <tr style="color:black">

        <td>@Site</td>

        <td>Average Cost</td>

        <td>Average Cost with Labour</td>

        </tr>

    }

您还可以删除添加列到控制器中的列表和视图包,因为它们不是必需的。


查看完整回答
反对 回复 2023-09-18
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我给你一个简单的例子,这样你就可以实现它,在全窗口中打开它以正确查看它

正如您在评论中所述,有两列是静态数据,唯一的动态数据是网站可以简单地循环抛出网站并显示它们,如下所示


    @foreach (Site s in sites)

    {

        <tr style="color:black">

        <td>@Site</td>

        <td>Average Cost</td>

        <td>Average Cost with Labour</td>

        </tr>

    }

您还可以删除添加列到控制器中的列表和视图包,因为它们不是必需的。


查看完整回答
反对 回复 2023-09-18
  • 3 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信