C#에서는 Zip 메서드를 사용하면 서로 다른 두 시퀀스(컬렉션)를 간단하게 하나로 병합할 수 있습니다. 이번 글에서는 정수 배열과 문자열 배열을 Zip 메서드로 결합하는 방법을 예제와 함께 살펴보겠습니다.
병합할 시퀀스 준비하기
먼저 병합에 사용할 정수 배열을 선언합니다.
int[] intArray = { 1, 2, 3, 4, 5, 6, 7, 8 };다음으로 문자열 배열을 선언합니다.
string[] stringArray = { "Depp", "Cruise", "Pitt", "Clooney", "Sandler", "Affleck", "Tarantino" };Zip 메서드로 시퀀스 병합하기
두 시퀀스를 병합하려면 AsQueryable()로 컬렉션을 쿼리 가능한 형태로 변환한 뒤 Zip 메서드를 호출합니다. 람다 식 안에서 각 요소를 원하는 형식으로 자유롭게 조합할 수 있습니다.
var mergedSeq = intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two);
Zip 메서드는 두 시퀀스의 요소를 인덱스 순서대로 하나씩 짝지어 새로운 시퀀스를 생성합니다. 참고로 두 시퀀스의 길이가 다르면 더 짧은 쪽 길이에 맞춰 병합됩니다.
전체 예제 코드
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] intArray = { 1, 2, 3, 4, 5, 6, 7, 8 };
string[] stringArray = { "Depp", "Cruise", "Pitt", "Clooney", "Sandler", "Affleck", "Tarantino" };
var mergedSeq = intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two);
foreach (var ele in mergedSeq)
Console.WriteLine(ele);
}
}실행 결과
1 Depp 2 Cruise 3 Pitt 4 Clooney 5 Sandler 6 Affleck 7 Tarantino
정수 배열에는 8개의 요소가 있지만 문자열 배열에는 7개의 요소만 있기 때문에, 결과 역시 더 짧은 쪽에 맞춰 7개의 요소만 출력됩니다. 이처럼 Zip 메서드를 활용하면 반복문 없이도 두 컬렉션의 데이터를 깔끔하게 결합할 수 있습니다.