在C#中循环列表内部列表

时间:2010-05-11 17:42:22

标签: c# arrays list loops

我有一个包含多个数组的数组列表。 每个数组都有2个索引。 首先,我想循环列表。然后我想在列表中循环数组。

我该怎么做?

我尝试使用这种方式,但它不起作用:

 1. foreach (string[] s in ArrangList1)
 2. {
 3.    int freq1 = int.Parse(s[1]);
 4.    foreach (string[] s1 in ArrangList)
 5.    {
 6.       int freq2 = int.Parse(s1[1]);
 7.       if (freq1 < freq2)
 8.       {
 9.          backup = s;
10.         index1 = ArrangList1.IndexOf(s);
11.         index2 = ArrangList.IndexOf(s1);
12.         ArrangList[index1] = s1;
13.         ArrangList[index2] = s;
14.      }
15.      backup = null;
16.   }
17. }

它在第4行给出了错误。

我尝试使用其他方式进行循环,但我不知道如何继续。

for (int i = 0; i < ArrangList1.Count; i++)
{
   for (int j = 0; j < ArrangList1[i].Length; j++)
   {
      ArrangList1[i][1];
   }
}

我使用C#。

如何解决此问题?

2 个答案:

答案 0 :(得分:3)

第4行中的错误可能是由于使用ArrangList的拼写错误。我认为你只定义了ArrangList1。无论如何,逻辑是错误的。如果你有一个包含数组的列表,你想在列表上做一个foreach,然后在每个列表项(这是一个数组)上做一个foreach。

目前还不清楚你的类型是什么,所以我假设ArrangList是一个字符串数组列表。

foreach(string[] s in ArrangList1)
{
  foreach(string innerS in s)
  {
      //now you have your innerString
      Console.WriteLine(innerS);
  }

}

在你的第二个例子中,

你也有错字......

for (int i = 0; i < ArrangList1.Count; i++)

       {

           for (int j = 0; j < ArrangList1[i].Length; j++)

           {

               ArrangList1[i][1]; //the 1 here should be j

           }

       }

答案 1 :(得分:0)

您还可以使用LINQ和一个foreach循环:

// assuming ArrangList1 is List<string[]>

var query = from a in ArrangList1
            from b in a
            select b;

foreach (String s in query)
{
    System.Console.Writeline(s);
}