开发者

Using foreach loop to iterate through two lists

I have two lists

List<object> a = new List<object>();
List<object> b = new List<object>();

Now i want to iterate through the elements of both list. I could do that by writing a foreach loop for each list. But is it also possible to do something like that?

foreach(object o in a, b) {
 o.DoSomething();
}

It woul开发者_开发知识库d also be nice if something like that would be possible:

foreach (object o in a && b) {
   o.DoSomething();
}


foreach(object o in a.Concat(b)) {
 o.DoSomething();
}


If you want to iterate through them individually then you can use Enumerable.Concat as has already been pointed out.

If you want to iterate over both lists simultaneously, having access to one element from each inside your loop, then in .NET 4.0 there is a method Enumerable.Zip that you can use.

int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };

var numbersAndWords = numbers.Zip(words, (first, second) => first + " " + second);

foreach (var item in numbersAndWords)
{
    Console.WriteLine(item);
}

Result:

1 one
2 two
3 three


foreach(object o in a.Concat(b)) {
 o.DoSomething();
}


This is another way you could do it:

for (int i = 0; i < (a.Count > b.Count ? a.Count : b.Count); i++)
{
    object objA, objB;
    if (i < a.Count) objA = a[i];
    if (i < b.Count) objB = b[i];

    // Do stuff
}


If you want to simultaneously iterate over two Lists of the same length (specially in the scenarios like comparing two list in testing), I think for loop makes more sense:

for (int i = 0; i < list1.Count; i++) {
    if (list1[i] == list2[i]) {
        // Do something
    }
}


Simply we can achieve using for loop

 int[] numbers = { 1, 2, 3, 4 };
    string[] words = { "one", "two", "three" };
    
     for (int i = 0; i < numbers .Count; i++)
                {
    var list1=numbers [i];
    var list 2=words[i];
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜