如何使用条件C#创建for循环?

van*_*loc 0 .net c# loops

我创建循环来创建许多列.

我的公式:

[dt.Columns.Add("Name" + "{a, b, c}" + {1, 2, 3, 4})]
Run Code Online (Sandbox Code Playgroud)

我输入k = 3的是创建3列开始Name,Class,Score.

这是我的第一个代码(它不起作用):

char charac = 'A';
for (int k = 0; k < 3; k++)
{
    for (int m = 0; m < 4; m++)
    {
        charac++;
        dt.Columns.Add("Name" + charac + m);
        dt.Columns.Add("Class" + charac + m);
        dt.Columns.Add("Score" + charac + m);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的结果如下:

dt.Columns.Add("Name_a1");
dt.Columns.Add("Name_a2");
dt.Columns.Add("Name_a3");
dt.Columns.Add("Name_a4");

dt.Columns.Add("Name_b1");
dt.Columns.Add("Name_b2");
dt.Columns.Add("Name_b3");
dt.Columns.Add("Name_b4");

dt.Columns.Add("Name_c1");
dt.Columns.Add("Name_c2");
dt.Columns.Add("Name_c3");
dt.Columns.Add("Name_c4");


dt.Columns.Add("Class_a1");
dt.Columns.Add("Class_a2");
dt.Columns.Add("Class_a3");
dt.Columns.Add("Class_a4");

dt.Columns.Add("Class_b1");
dt.Columns.Add("Class_b2");
dt.Columns.Add("Class_b3");
dt.Columns.Add("Class_b4");

dt.Columns.Add("Class_c1");
dt.Columns.Add("Class_c2");
dt.Columns.Add("Class_c3");
dt.Columns.Add("Class_c4");


dt.Columns.Add("Score_a1");
dt.Columns.Add("Score_a2");
dt.Columns.Add("Score_a3");
dt.Columns.Add("Score_a4");

dt.Columns.Add("Score_b1");
dt.Columns.Add("Score_b2");
dt.Columns.Add("Score_b3");
dt.Columns.Add("Score_b4");

dt.Columns.Add("Score_c1");
dt.Columns.Add("Score_c2");
dt.Columns.Add("Score_c3");
dt.Columns.Add("Score_c4");
Run Code Online (Sandbox Code Playgroud)

And*_*yev 7

根据您的要求,您的代码应如下所示:

char charac = 'A';
for (int k = 1; k <= 3; k++)
{
    for (int m = 1; m <= 4; m++)
    {
        dt.Columns.Add("Name_" + charac + m);
        dt.Columns.Add("Class_" + charac + m);
        dt.Columns.Add("Score_" + charac + m);
    }

    charac++;
}
Run Code Online (Sandbox Code Playgroud)

你犯的错误:

  1. charac在不正确的地方增加(应该在外循环的末尾.不在内部的开头).
  2. 循环应从1开始,而不是从零开始.还应包括循环计数器的"上限".

更新.在列排序很重要的情况下 - 您需要为每个列前缀单独循环.为了避免代码复制,可以将其重构为方法:

private void AddColumns(DataTable dt, string columnPrefix)
{
    char charac = 'A';
    for (int k = 1; k <= 3; k++)
    {
        for (int m = 1; m <= 4; m++)
        {
            dt.Columns.Add(columnPrefix + charac + m);
        }

        charac++;
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用此方法

AddColumns(dt, "Name_");
AddColumns(dt, "Class_");
AddColumns(dt, "Score_");
Run Code Online (Sandbox Code Playgroud)