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

C#에서 두 개의 리스트를 결합하는 방법 – AddRange() 메서드 활용하기

C#에서 두 개의 리스트(List)를 하나로 합치고 싶다면 AddRange() 메서드를 사용하면 됩니다. 이 메서드는 다른 컬렉션의 모든 요소를 현재 리스트의 끝에 한 번에 추가해 주기 때문에, 반복문 없이도 간단하게 두 리스트를 연결할 수 있습니다.

1. 첫 번째 리스트 생성

먼저 첫 번째 리스트를 만들어 보겠습니다.

var products1 = new List<string>();
products1.Add("Belts");
products1.Add("Tshirt");
products1.Add("Trousers");

2. 두 번째 리스트 생성

이어서 결합할 두 번째 리스트를 생성합니다.

var products2 = new List<string>();
products2.Add("Footwear");
products2.Add("Electronics");

3. AddRange()로 두 리스트 연결하기

두 리스트를 하나로 합치는 방법은 아주 간단합니다. 기준이 되는 리스트에서 AddRange()를 호출하고 인자로 다른 리스트를 넘겨주면 됩니다.

products1.AddRange(products2);

위 코드가 실행되면 products2의 모든 요소가 products1의 뒤에 추가되어, 하나의 리스트로 합쳐지게 됩니다.

전체 예제 코드

아래는 지금까지 설명한 내용을 모두 포함한 완성된 코드입니다.

using System.Collections.Generic;
using System;

namespace Demo {
   public static class Program {
      public static void Main() {
         var products1 = new List<string>();
         products1.Add("Belts");
         products1.Add("Tshirt");
         products1.Add("Trousers");

         Console.WriteLine("첫 번째 리스트...");
         foreach(var p in products1) {
            Console.WriteLine(p);
         }

         var products2 = new List<string>();
         products2.Add("Footwear");
         products2.Add("Electronics");

         Console.WriteLine("두 번째 리스트...");
         foreach(var p in products2) {
            Console.WriteLine(p);
         }

         products1.AddRange(products2);

         Console.WriteLine("결합된 리스트...");
         foreach(var p in products1) {
            Console.WriteLine(p);
         }
      }
   }
}

실행 결과

첫 번째 리스트...
Belts
Tshirt
Trousers
두 번째 리스트...
Footwear
Electronics
결합된 리스트...
Belts
Tshirt
Trousers
Footwear
Electronics

참고: LINQ의 Concat() 메서드 활용

원본 리스트를 수정하지 않고 새로운 리스트로 결과를 얻고 싶다면, System.Linq 네임스페이스의 Concat() 메서드를 사용하는 것도 좋은 방법입니다.

using System.Linq;

var combined = products1.Concat(products2).ToList();

AddRange()는 기존 리스트를 직접 변경(in-place)하는 반면, Concat()은 원본 리스트를 그대로 유지하면서 새로운 시퀀스를 반환한다는 점이 차이입니다. 상황에 맞게 적절한 방법을 선택하시면 됩니다.