C#에서 두 개의 리스트(List)를 하나로 합치려면 AddRange() 메서드를 사용하면 됩니다. AddRange()는 인자로 전달된 컬렉션의 모든 요소를 호출한 리스트의 끝에 그대로 추가해 주는 메서드입니다.
1. 첫 번째 리스트 만들기
먼저 문자열 타입의 첫 번째 리스트를 생성하고 요소를 추가합니다.
var list1 = new List<string>();
list1.Add("Keyboard");
list1.Add("Mouse");2. 두 번째 리스트 만들기
같은 방식으로 두 번째 리스트를 생성합니다.
var list2 = new List<string>();
list2.Add("Hard Disk");
list2.Add("Pen Drive");3. AddRange()로 두 리스트 결합하기
list1에 list2의 모든 요소를 추가하려면 다음 한 줄이면 충분합니다.
list1.AddRange(list2);
이 코드가 실행되면 list2의 요소들이 list1 뒤에 순서대로 붙어 하나의 리스트가 완성됩니다.
전체 예제 코드
using System.Collections.Generic;
using System;
namespace Demo {
public static class Program {
public static void Main() {
var list1 = new List<string>();
list1.Add("Keyboard");
list1.Add("Mouse");
Console.WriteLine("Our list1....");
foreach(var p in list1) {
Console.WriteLine(p);
}
var list2 = new List<string>();
list2.Add("Hard Disk");
list2.Add("Pen Drive");
Console.WriteLine("Our list2....");
foreach(var p in list2) {
Console.WriteLine(p);
}
list1.AddRange(list2);
Console.WriteLine("Concatenated list....");
foreach(var p in list1) {
Console.WriteLine(p);
}
}
}
}실행 결과
Our list1.... Keyboard Mouse Our list2.... Hard Disk Pen Drive Concatenated list.... Keyboard Mouse Hard Disk Pen Drive
참고: LINQ의 Concat() 메서드
원본 리스트를 수정하지 않고 두 리스트를 이어붙인 새로운 리스트를 만들고 싶다면 LINQ의 Concat() 메서드를 사용할 수도 있습니다.
var combined = list1.Concat(list2).ToList();
Concat()은 두 시퀀스를 연결한 새로운 열거형(IEnumerable)을 반환하므로, 기존 데이터를 그대로 유지해야 하는 상황에서 유용하게 활용할 수 있습니다. 반면 AddRange()는 원본 리스트 자체를 변경한다는 점을 기억해 두세요.