Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 foreach 문 하나로 두 개의 배열 또는 리스트를 동시에 반복하는 방법

C#에서는 두 개의 배열이나 리스트를 Zip() 메서드를 활용하면 단 하나의 foreach 문으로 동시에 반복 처리할 수 있습니다. Zip은 LINQ에서 제공하는 확장 메서드로, 두 시퀀스의 요소들을 인덱스 순서대로 하나씩 짝지어 새로운 시퀀스를 생성해 줍니다.

1단계: 두 개의 배열 선언

먼저 int형과 string형 요소를 가진 두 개의 배열을 준비합니다.

var val = new [] { 20, 40, 60};
var str = new [] { "ele1", "ele2", "ele3"};

2단계: Zip() 메서드로 두 배열 결합

Zip() 메서드를 사용하면 두 배열을 병렬로 처리할 수 있습니다. 람다 식을 통해 각 배열의 대응되는 요소를 하나의 객체로 묶어줍니다.

var res = val.Zip(str, (n, w) => new { Number = n, Word = w });

위 코드는 int 요소를 가진 val 배열과 string 요소를 가진 str 배열의 요소들을 순서대로 짝지어 익명 타입(Number, Word)의 컬렉션을 만듭니다.

3단계: foreach 문으로 두 배열 반복하기

이제 하나의 foreach 문만으로 두 배열의 요소를 동시에 순회할 수 있습니다.

using System;
using System.Collections.Generic;
using System.Linq;

public class Demo {
    public static void Main() {
        var val = new [] { 20, 40, 60};
        var str = new [] { "ele1", "ele2", "ele3"};
        var res = val.Zip(str, (n, w) => new { Number = n, Word = w });

        foreach(var a in res) {
            Console.WriteLine(a.Number + a.Word);
        }
    }
}

실행 결과

20ele1
40ele2
60ele3

참고 사항

Zip() 메서드는 두 시퀀스 중 더 짧은 쪽의 길이에 맞춰 결과를 생성합니다. 따라서 두 배열의 길이가 다를 경우, 남는 요소들은 무시되므로 주의해야 합니다.