从列表到锯齿数组

时间:2019-07-07 21:50:43

标签: c# list jagged-arrays

我正在尝试将List<T>转换为Jagged Array T [][]。但是锯齿数组中的每个数组都在重复列表的前N个元素。我知道我的代码正是这样做的,但是如何以不同的方式遍历列表,这样我就不会遍历相同的N个元素?

请忽略DataTree<T>类型,它只是创建锯齿数组的参考数据结构拓扑。

  public static T[][] ToJaggedArrray<T>(this List<T> data, DataTree<T> dataTree)
        {
            // Get total elements on each row
            //dataTree.DataCount = total elements in data structure
            int totalElementsPerArray = dataTree.DataCount / dataTree.BranchCount;

            // dataTree.BranchCount = number of elemets/rows
            int numElements = dataTree.BranchCount;



            T[][] outPut = new T[numElements][];

            for (int i = 0; i < outPut.Length; i++)
            {
                T[] temp = new T[totalElementsPerArray];

                for (int j = 0; j < temp.Length; j++)
                {
                    temp[j] = data[j];

                }

                outPut[i] = temp;
            }

            return outPut;
        }

/* Output:

54
19
83
80
28
48
46
16
52
38
41
10

Element(0): 54 19 83 80
Element(1): 54 19 83 80
Element(2): 54 19 83 80

*/


/* Expected Output:

54
19
83
80
28
48
46
16
52
38
41
10

Element(0): 54 19 83 80
Element(1): 28 48 46 16
Element(2): 52 38 41 10

*/

1 个答案:

答案 0 :(得分:-2)

我相信您的问题是您不了解循环。在您的情况下,嵌套的for循环将始终从0开始,并将始终从数据中获取temp.length元素。

您在这里看到我的观点吗?