使用C#组合foreach和for循环

时间:2014-01-26 10:33:54

标签: c# winforms loops for-loop foreach

我有一些代码循环遍历我的数据表,我很好地使用了item变量。但我的问题是i需要迭代,它需要从它上面的最后一个数字+ 1开始。 foreach完成后,它需要从循环中退出。

private void button2_Click(object sender, EventArgs e)
{
    CreateExcelDoc excell_app = new CreateExcelDoc();
    //creates the main header

    COLUMNSTableAdapter adapterTableName = new COLUMNSTableAdapter();

    DataTable table = adapterTableName.GetData(tableName); // Get the data table.
    foreach (DataRow row in table.Rows) // Loop over the rows.
    {
        foreach (var item in row.ItemArray) // Loop over the items.
        {

            for (int i = 1; i < 30; i++)
            {
                excell_app.createHeaders(1, 1, "" + item + "", i, i, 1, "black", false, 10, "n");
            }

        }
    }
}

3 个答案:

答案 0 :(得分:3)

  

我的代码在到达数据表的下一行之前会循环30次。这是错误的,我试图将计数定义为数据表中项目的计数

那你为什么不像这样使用一个for循环?

for(int i = 1; i< row.ItemArray.Length+1; i++)
{
   var item = row.ItemArray[i];
   excell_app.createHeaders(1, 1, "" + item + "", i, i, 1, "black", false, 10, "n");
}

答案 1 :(得分:2)

编辑:

  

每次有新项目时,所有i需要做的就是递增。一旦没有更多的项目,那么我必须停止递增。

     

在这种情况下,我需要写一些东西,它会阻止它返回到新的行..

int i = 0;
foreach (DataRow row in table.Rows) // Loop over the rows.
{
    foreach (var item in row.ItemArrai) // Loop over the items.
    {
        i++;
        for (int j = 1; j < 30; j++)
        {
            excell_app.createHeaders(1, 1, "" + item + "", j, j, 1, "black", false, 10, "n");
        }
    }
}
Console.WriteLine(i);   

答案 2 :(得分:2)

发表评论后,您可以使用另一个变量:
正如@Grundy在评论中建议的那样 - 如果你使用数组,你可以使用它的长度:

int j = 1;
foreach (DataRow row in table.Rows) // Loop over the rows.
{
    for (int i = 0; i < row.ItemArray.Length; i++, j++)
    {
       excell_app.createHeaders(1, 1, "" + row.ItemArray[i] + "", j, j, 1, "black", false, 10, "n");
    }
}