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");
}

ただし、配列全体が 1 つの長い行に表示されます。aspxページで行ごとに表示するにはどうすればよいですか?

4

3 に答える 3

4

問題は、四角形の 2 次元配列のループが、その配列のすべての要素を一度に 1 つずつforeach返すことです。2 次元配列の行と列にアクセスするには、インデックスを使用する必要があります。

各行に移動し、各要素を表示します。次に、各行の後に段落 (改行) を追加します。

以下に例を示します。

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することです (私はそれがDataTableだと思います)Rowsプロパティです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 に答える