无法弄清楚如何在三维列表中打印第二维

Can not figure out how to print second dimension in three dimension List

我正在制作三个维度的列表。如果我 运行 我的代码显示以下字符串:list5 + list3 + list1。现在这是三个维度,所以每个维度都添加一个词。如果您查看代码,将会显示:4*4*4 = 64 种可能性。现在我想向第二个维度添加一些内容:testing1 和 testing2:

SecondDimonsion.Add("testing1"); SecondDimonsion.Add("testing2");

我不希望测试结果与 List5 交互。我确实希望他们与 List1 互动。 所以结果将是:

Hello1testing1 Hello2testing1 Hello3testing1 Hello4testing1 Hello1testing2 Hello2testing2 Hello3testing2 Hello4testing2

所以它总共会打印出 64 + 8 种可能性。

这是一个很难解释的问题,可能更难理解。如果有人不理解这个概念,我很乐意编辑我的问题。

提前致谢!

List<string> List1 = new List<string>();
List<string> SecondDimonsion = new List<string>();
List<string> List5 = new List<string>();
List<string> List3 = new List<string>();
List<List<List<string>>> List6 = new List<List<List<string>>>();    

List1.Add("Hello1");                  
List1.Add("Hello2");             
List1.Add("Hello3");            
List1.Add("Hello4");       

List3.Add("123");                  
List3.Add("456");             
List3.Add("789");            
List3.Add("000"); 

List5.Add("white");
List5.Add("green");             
List5.Add("yellow");            
List5.Add("black"); 

SecondDimonsion.Add("testing1");
SecondDimonsion.Add("testing2");

for (int i = 0; i < List1.Count; i++)
{
    List<List<string>> List2 = new List<List<string>>();
    for (int j = 0; j < List3.Count -2;j++)
    {
        List<string> List4 = new List<string>();
        for (int k = 0; k < List5.Count; k++)
        {
            List4.Add(List1[i] + List3[j] + List5[k]);
        }
        List2.Add(List4);
    }
    List2.Add(SecondDimonsion);
    List6.Add(List2);
}
for (int k = 0; k < List1.Count; k++)
{
    for (int i = 0; i < List3.Count -2; i++)
    {
        for (int j = 0; j < List5.Count; j++)
        {
            Console.WriteLine(List6[k][i][j]);
        }
        Console.WriteLine(List6[k][i]);
    }
}

您似乎在构建 2 个列表。第一个是 3d,另一个是 2d。我会这样拆分:

    List<string> stuff1 = new List<string>();
    List<string> stuff2 = new List<string>();
    List<string> stuff3 = new List<string>();

    List<string> otherStuff = new List<string>();

    stuff1.Add("a1");
    stuff1.Add("a2");
    stuff1.Add("a3");
    stuff1.Add("a4");

    stuff2.Add("b1");
    stuff2.Add("b2");
    stuff2.Add("b3");
    stuff2.Add("b4");

    stuff3.Add("c1");
    stuff3.Add("c2");
    stuff3.Add("c3");
    stuff3.Add("c4");

    otherStuff.Add("d1");
    otherStuff.Add("d2");

    List<List<List<string>>> first64 = new List<List<List<string>>>();
    List<List<string>> other8 = new List<List<string>>();

    foreach (var v1 in stuff1) {
        // Fill temporary 2d list.
        List<List<string>> list2d = new List<List<string>>();           
        foreach (var v2 in stuff2) {
            // Fill temporary 1d list.
            List<string> list1d = new List<string>();
            foreach(var v3 in stuff3) {
                list1d.Add(v1 + v2 + v3);
            }

            // Add each 1d list to the temp 2d list.
            list2d.Add(list1d);
        }

        // Add each 2d list to the main 3d list.
        first64.Add(list2d);

        // Create another 1d list to hold second combinations.
        List<string> otherList1d = new List<string>();
        foreach(var otherV in otherStuff) {
            otherList1d.Add(v1 + otherV);
        }

        // Add second 1d list to second 2d list.
        other8.Add(otherList1d);
    }

    // Print first 64.
    for(var x = 0; x < first64.Count; x++) {
        for(var y = 0; y < first64[x].Count; y++) {
            for(var z = 0; z < first64[x][y].Count; z++) {
                Console.WriteLine(first64[x][y][z]);
            }
        }
    }

    // Print other 8.
    for(var x = 0; x < first64.Count; x++) {
        for(var y2 = 0; y2 < other8[x].Count; y2++) {
            Console.WriteLine(other8[x][y2]);
        }
    }

如果将最后一个循环更改为:

    for(var x = 0; x < List6.Count; x++) {
        for(var y = 0; y < List6[x].Count; y++) {
            for(var z = 0; z < List6[x][y].Count; z++) {
                Console.WriteLine(List6[x][y][z]);
            }
        }
    }

您会发现您所写的内容确实将 SecondDimension 的值添加到您的列表中。由于 List6[x].Count > List3.Count 循环从未到达那里。但是,您仍然没有向它们附加任何内容,因此您不会完全获得想要的结果。

Here is a fiddle可以进去玩了