如何将锯齿状数组转换为2D数组?

Gia*_*dze 5 .net c# arrays multidimensional-array

我有一个file.txt包含以下内容的文件:

6,73,6,71 
32,1,0,12 
3,11,1,134 
43,15,43,6 
55,0,4,12 
Run Code Online (Sandbox Code Playgroud)

这段代码可以读取并将其提供给锯齿状数组:

    string[][] arr = new string[5][];
    string[] filelines = File.ReadAllLines("file.txt");
    for (int i = 0; i < filelines.Length; i++) 
    {
        arr[i] = filelines[i].Split(',').ToArray();
    }
Run Code Online (Sandbox Code Playgroud)

我将如何做同样的事情,但使用2D阵列?

p.s*_*w.g 5

假设您在开始阅读文件之前知道 2D数组的尺寸(或至少是最大尺寸),您可以执行以下操作:

string[,] arr = new string[5,4];
string[] filelines = File.ReadAllLines("file.txt");
for (int i = 0; i < filelines.Length; i++) 
{
    var parts = filelines[i].Split(',');    // Note: no need for .ToArray()
    for (int j = 0; j < parts.Length; j++) 
    {
        arr[i, j] = parts[j];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你不知道的尺寸,或者整数每行的数量可能会有所不同,当前的代码将工作,你可以使用一个小的LINQ到数组转换你在阅读后一切:

string[] filelines = File.ReadAllLines("file.txt");
string[][] arr = new string[filelines.Length][];
for (int i = 0; i < filelines.Length; i++) 
{
    arr[i] = filelines[i].Split(',');       // Note: no need for .ToArray()
}

// now convert
string[,] arr2 = new string[arr.Length, arr.Max(x => x.Length)];
for(var i = 0; i < arr.Length; i++)
{
    for(var j = 0; j < arr[i].Length; j++)
    {
        arr2[i, j] = arr[i][j];
    }
}
Run Code Online (Sandbox Code Playgroud)