最智能的方式将[] []形式的数组转换为[,]?

时间:2013-08-16 15:30:05

标签: c# arrays

如果你有一个类似string [] []的数组,那么将它转换为常规多维数组(如string [,])的最聪明方法是假设前一个数组是矩形(不是锯齿状)?

我能想到的唯一方法是获取维度,声明具有这些维度的多维数组,然后遍历源数组并填充新数组。但我想知道是否有更简单的解决方案。

1 个答案:

答案 0 :(得分:0)

这只是为了好玩:完全同意这是一种过度杀伤,而最好的方法是正常的迭代。

    //example jagged array
    string[][] ja = new string[2][];

    for (int i = 0; i < 2; i++)
        ja[i] = Enumerable.Range(0, 3).Select(k => "Cell [" + i + "," + k + "]").ToArray();

    //conversion to a 2D-array
    string[,] ka = new[] { new string[ja.Length, ja[0].Length] }
        .Select(_ => new { x = _, y = ja.Select((a, ia) => a.Select((b, ib) => _[ia, ib] = b).Count()).Count() })
        .Select(_ => _.x)
        .First();

    //dump result
    for (int i = 0; i < 2; i++)
        for (int k = 0; k < 3; k++)
        {
            Console.WriteLine(ka[i, k]);
        }

几乎不可读,但它有效(至少在初始数组不为空/格式错误时)。