我有一个string[][]
列表中的每个条目代表文档中的一列,数组的每个成员代表此列中的一行
示例:
0.0 | 1.0 | 2.0
0.1 | 1.1 | 2.1
0.2 | 1.2 | 2.2
现在我将其写入文件。但是,如果我这样做,我首先需要将它们转换为string [],其中每个元素都是一行,加上逗号(.csv文件)。
有任何建议如何做到这一点?
我尝试用几个循环包裹我的头,然后将每个列的第n个元素放入缓冲区,然后将这些缓冲区连接在一起。我相信我会以这种方式工作,但我不认为它有任何有效或良好的风格。
答案 0 :(得分:3)
好的简单:假设整个数组是矩形的(即所有行中的项目数相同,所有列中的项目数相同)。你现在要做的是,在(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
}
答案 1 :(得分:1)
如果您从这开始:
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