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

C# Zip 메서드로 두 시퀀스 손쉽게 병합하기

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 메서드를 활용하면 반복문 없이도 두 컬렉션의 데이터를 깔끔하게 결합할 수 있습니다.