反转数组的数组

本文关键字:数组 | 更新日期: 2023-09-27 18:10:00

我有一个string[][]
列表中的每个条目代表文档中的一列,数组的每个成员代表该列中的一行。
例子:

0.0 | 1.0 | 2.0  
0.1 | 1.1 | 2.1  
0.2 | 1.2 | 2.2  

现在我要把它写入一个文件。但是,如果我这样做,我首先需要将它们转换为字符串[],其中每个元素是一行,用逗号连接(.csv文件)。

有什么建议吗?

我试着用几个循环来包装它,每个循环取每列的第n个元素,然后把它塞进一个缓冲区,然后把这些缓冲区连接在一起。我相信我会让它这样工作,但我不认为这是任何有效或好的风格。

反转数组的数组

简单:假设整个数组是矩形的(即所有行和所有列的项目数量相同)。你现在要做的是,给定一个在(x,y)的项目,将其位置更改为(y,x)。

:

var array2 = new string[array1.GetLength(0), array1.GetLength(1)];
for(int i=0;i<array2.GetLength(0);i++){
    for(int j=0;j<array2.GetLength(1);j++)
        array2[i,j] = array1[j][i]; //this is the magic line
}

如果你是这样开始的:

string[][] original = new[] {
    new[] { "0.0", "0.1", "0.2" },
    new[] { "1.0", "1.1", "1.2" },
    new[] { "2.0", "2.1", "2.2" }
};

然后你可以这样做来依次处理每一行:

for (int column = 0; column < original.Length; column++)
{
    string row = string.Join(",", original.Select(o => o[column]));
    Console.WriteLine(row);    
}

这会产生以下输出:

0.0,1.0,2.0
0.1,1.1,2.1
0.2,1.2,2.2