【问题标题】:Retrieve values in nested link with C#使用 C# 检索嵌套链接中的值
【发布时间】:2023-02-02 18:17:57
【问题描述】:

我有一个嵌套的字符串列表,我试图将每个项目保存在特定变量中。 我试过这种方式,但我得到了每个重复的结果:

  • 一一

  • 二二二二二二二

  • 三三三三三三三

  • 四四四四四四四

  • 五五五五五五五五

  • 六六六六六六六六

  • 七七七七七七

         string argp;
         string arg0;
         string arg1;
         string arg2;
         string arg3;
         string arg4;
         string arg5;
         string arg6;
         string arguments;
         List<List<string>> myList = new List<List<string>>();
         myList.Add(new List<string> { @"one", "two", "three", "four", "five", "six", "seven" });
    
         myList.Add(new List<string> { @"one", "two", "three", "four", "five", "six", "seven" });
    
         for (var i = 0; i < myList.Count; i++)
         {
    
    
             argp = myList[i][0];
             for (var j = 0; j < myList[i].Count; j++)
             {
    
                 arg0 = myList[i][j];
                 // = "localhost";
                 arg1 = myList[i][j];
                 arg2 = myList[i][j];
                 arg3 = myList[i][j];
                 arg4 = myList[i][j];
                 arg5 = myList[i][j];
                 arg6 = myList[i][j];
                 arguments = myList[i][j] + " " + myList[i][j] + " " + arg2 + " " + arg3 + " " + arg4 + " " + arg5 + " " + arg6;
                 Console.WriteLine(arguments);
    
    
             }
             Console.WriteLine("==============");
         }
    

【问题讨论】:

  • argX = myList[i][j];ij对所有Xes都是一样的。
  • 您不需要内部循环,因为无论如何您都是一次分配所有变量。只需省略内循环并将该循环内的代码移至外循环即可。
  • 但是你在外循环的每次迭代中都覆盖了结果,所以 arg0 将只有 List[1][0] 的值。
  • 这是一个嵌套列表,所以我在初始列表中有很多列表
  • 目前还不清楚目标是什么。您的预期输出是什么?

标签: c#


【解决方案1】:

你不需要内循环:

for (var i = 0; i < myList.Count; i++)
{
    var list = myList[i]; // todo - check if enough elements?
    arg0 = list[0];
    arg1 = list[1];
    arg2 = list[2];
    arg3 = list[3];
    arg4 = list[4];
    arg5 = list[5];
    arg6 = list[6];

    Console.WriteLine(string.Join(" ", arg0, arg1, ...)); 
    Console.WriteLine("==============");
}

请注意,这将在每次迭代中覆盖argX's,如果目标是按位置组合参数,您可以执行类似arg0 += " " + list[0];的操作(作为一种快速而肮脏的方法,如果预期有很多列表,那么最好考虑使用类似于StringBuilder)。

如果目标只是输出参数,那么使用foreachstring.Join 可以更轻松地做到这一点:

foreach (var list in myList)
{
    Console.WriteLine(string.Join(" ", list));
    Console.WriteLine("==============");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多