C# 在foreach循环中使用多个对象进行迭代

C# 在foreach循环中使用多个对象进行迭代,c#,.net,windows,C#,.net,Windows,我有一个多维列表: List<string>[] list = new List<string>[2]; list[0] = new List<string>(); list[1] = new List<string>(); 尽管我希望能够做到以下几点: foreach (String str in dbConnectObject.Select()[0] & String str2 in dbConnectObje

我有一个多维列表:

    List<string>[] list = new List<string>[2];
    list[0] = new List<string>();
    list[1] = new List<string>();
尽管我希望能够做到以下几点:

foreach (String str in dbConnectObject.Select()[0] & String str2 in dbConnectObject.Select()[1])
{
   Console.WriteLine(str + str2);
}

如果列表大小相同,则可以使用:


如果要按顺序遍历这两个列表,可以使用:


您可以尝试以下代码。如果尺寸不同,它也可以工作

for (int i = 0; i < list[0].Count; i++)
{
    var str0 = list[0][i];
    Console.WriteLine(str0);
    if (list[1].Count > i)
    {
        var str1 = list[1][i];
        Console.WriteLine(str1);
    }
}
for(int i=0;ii)
{
var str1=列表[1][i];
控制台写入线(str1);
}
}
改用LINQ:

foreach(列表中的变量s.SelectMany(l=>l))
{
控制台。写入线(s);

}

Ths不会将两个列表相互联接。为什么在纯
列表上使用
可枚举的扩展方法?(
Count()
而不是Count,
ElementAt
而不是索引器)
Union
将从返回集中排除重复项。我认为这是不可取的。我更喜欢
Concat
,虽然
Zip
可能更合适。
foreach (var p in dbConnectObject.Select()[0].Zip(dbConnectObject.Select()[1], (a,b) => new {First = a, Second = b})) {
    Console.Writeline("{0} {1}", p.First, p.Second);
}
IEnumerable<string> union = list[0].Union(list[1]);

foreach(string str int union)
{
     DoSomething(str);
}
var joined = from str1 in list[0]
             from str2 in list[1]
             select new { str1, str2};


foreach(var combination in joined)
{
    //DoSomethingWith(combination.str1, combination.str2);
    Console.WriteLine(str + str2);
}
for (int i = 0; i < list[0].Count; i++)
{
    var str0 = list[0][i];
    Console.WriteLine(str0);
    if (list[1].Count > i)
    {
        var str1 = list[1][i];
        Console.WriteLine(str1);
    }
}