Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在多维数组中按行显示值?_C#_Asp.net - Fatal编程技术网

C# 如何在多维数组中按行显示值?

C# 如何在多维数组中按行显示值?,c#,asp.net,C#,Asp.net,我创建了一个多维数组: 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(); } } fore

我创建了一个多维数组:

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");
}
string[,]array_questions=新字符串[dt.Rows.Count,dt.Columns.Count];
对于(i=0;i

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

您的问题是矩形二维数组的
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);
} 
如果您之前正确填写了
array\u问题
,您应该会在页面上收到表视图数据,结果是
响应。编写
调用


一个更干净的解决方案是重用
dt
(我假设它是一个
属性,即
IEnumerable
。接下来的代码实现了类似的行为,但以更干净的方式,并且您不需要另一个数组

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
for(int r=0;r”);
}

你是怎么想的

   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();
for(int r=0;r
据我所知,OP want的
array\u问题的实际值是在表中格式化的,而不是每个维度的计数。它显示了错误:与“string.Join(string,string[])匹配的最佳重载方法有一些无效参数,您可以使用string.Join。我不确定你会给它什么作为数组参数。也许ArraySegment可以工作?@Alxandr是的,
string.Join
可以完美地工作在锯齿状数组上,但是对于矩形数组,没有内置机制来检索单独的行和行。适用于一维数组(或锯齿数组,基本上是一维数组的一维数组)。@IlyaIvanov你说得对。我查了一下。虽然我必须说这应该有一个结构(比如ArraySegment,但可能是ArrayDigment之类的)。Join接受一个可枚举项(尽管它可能没有给它一个数组那么有效)。您的双循环可能仍然是最好的解决方案。@Ilya Ivanov,但它显示了一个错误:“string.Join(string,string[])”的最佳重载方法匹配有一些无效参数。请help@user2431727然后使用第一个选项。
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 />");
}
   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();