2

我创建了一个多维数组:

string[,] array_questions = new string[dt.Rows.Count, dt.Columns.Count];

for (i = 0; i < dt.Rows.Count; i++)
{
    for (j = 0; j < dt.Columns.Count; j++)
    {
        array_questions[i, j] = dt.Rows[i][j].ToString();
    }
}

foreach (string number in array_questions)
{
    Response.Write(number + "\n");
}

但它将整个数组显示在一个冗长的行中。如何在 aspx 页面中按行显示它?

4

3 回答 3

4

您的问题是foreach矩形二维数组的循环将一次返回该数组中的所有元素。您需要使用索引来访问二维数组的行和列。

遍历每一行并显示每个元素。然后在每一行之后添加段落(新行)。

示例如下:

for (int row = 0; row < array_questions.GetLength(0); row++)
{
    for (int column = 0; column < array_questions.GetLength(1); column++)
    {
        //writing data, you probably want to add comma after it
        Response.Write(array_questions[row,column]); 
    }

    //adding new line, so that next loop will start from new line
    Response.Write(Environment.NewLine);
} 

对于 5 行和 10 列默认int值的数组,我收到了下一张表

0000000000
0000000000
0000000000
0000000000
0000000000

如果您之前已正确填充array_questions,您应该会在页面上收到表格视图数据,从而导致Response.Write调用。


一个更清洁的解决方案是重用dt(我假设它是一个DataTableRows属性,即IEnumerable<DataRowCollection>. 下一个代码实现了类似的行为,但是以更简洁的方式,并且您不需要另一个数组。

foreach (var row in dt.Rows)
{
    Response.Write(string.Join(", ", row) + Environment.NewLine);
}

将以类似表格的方式打印数据:

0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
于 2013-06-04T10:07:03.587 回答
2
for (int r = 0; r < dt.Rows.Count; r++)
{
    for (int c = 0; c < dt.Columns.Count; c++)
    {
        Response.Write(String.Join(", ", dt.Rows[r][c].ToString())); 
    }
    Response.Write("<br />");
}
于 2013-06-04T10:08:19.973 回答
1

你怎么看这种方式?

   for (int r = 0; r < table.GetLength(0); r++)
    {
        for (int k = 0; k < table.GetLength(0); k++)
        {
            Console.Write((table[r, k] + " " ));
        }
        Console.Write(Environment.NewLine + Environment.NewLine);
    }
    Console.ReadLine();
于 2013-11-24T18:26:25.653 回答