C#의 Zip 메서드는 두 개의 시퀀스(컬렉션)를 지정된 조건자(predicate)에 따라 요소별로 결합하여 하나의 새로운 시퀀스로 병합하는 데 사용됩니다. 예를 들어 숫자 배열과 문자열 배열을 가지고 있을 때, 각 인덱스에 해당하는 요소들을 하나씩 짝지어 새로운 결과를 만들 수 있습니다.
병합할 배열 준비
먼저 병합할 두 개의 배열을 준비합니다. 아래는 정수형 배열과 문자열 배열입니다.
int[] intArray = { 10, 20, 30, 40 };
string[] stringArray = { "Jack", "Tim", "Henry", "Tom" };Zip 메서드로 시퀀스 병합하기
이제 Zip 메서드를 사용하여 두 배열을 병합해 보겠습니다. 람다 식을 통해 첫 번째 시퀀스의 요소(one)와 두 번째 시퀀스의 요소(two)를 공백으로 구분하여 하나의 문자열로 결합합니다.
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 = { 10, 20, 30, 40 };
string[] stringArray = { "Jack", "Tim", "Henry", "Tom" };
var mergedSeq = intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two);
foreach (var ele in mergedSeq)
Console.WriteLine(ele);
}
}실행 결과
위 코드를 실행하면 다음과 같이 두 배열의 요소가 인덱스 순서대로 병합되어 출력됩니다.
10 Jack 20 Tim 30 Henry 40 Tom
이처럼 C# LINQ의 Zip 메서드를 활용하면 서로 다른 컬렉션의 데이터를 손쉽게 쌍으로 묶어 새로운 형태의 시퀀스를 만들 수 있어, 데이터 변환 및 조합 작업에서 매우 유용하게 사용됩니다.