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()은 원본 리스트를 그대로 유지하면서 새로운 시퀀스를 반환한다는 점이 차이입니다. 상황에 맞게 적절한 방법을 선택하시면 됩니다.