C#에서 하나의 리스트(List)에 다른 리스트의 모든 요소를 한 번에 합치고 싶다면 AddRange() 메서드를 사용하면 됩니다. 이 메서드는 컬렉션을 인자로 받아 해당 컬렉션의 모든 요소를 기존 리스트 끝에 순서대로 추가합니다.
먼저 첫 번째 리스트를 만들어 보겠습니다.
List<string> list1 = new List<string>();
list1.Add("One");
list1.Add("Two");다음으로 두 번째 리스트를 생성합니다.
List<string> list2 = new List<string>();
list2.Add("Three");
list2.Add("Four");이제 AddRange() 메서드를 사용해 두 번째 리스트를 첫 번째 리스트에 추가합니다.
list1.AddRange(list2);
전체 코드를 통해 동작 과정을 확인해 보겠습니다.
예제
using System;
using System.Collections.Generic;
using System.Linq;
public class Demo {
public static void Main() {
List<string> list1 = new List<string>();
list1.Add("One");
list1.Add("Two");
Console.WriteLine("첫 번째 리스트...");
foreach(string value in list1) {
Console.WriteLine(value);
}
Console.WriteLine("두 번째 리스트...");
List<string> list2 = new List<string>();
list2.Add("Three");
list2.Add("Four");
foreach(string value in list2) {
Console.WriteLine(value);
}
Console.WriteLine("리스트 추가 후...");
list1.AddRange(list2);
foreach(string value in list1) {
Console.WriteLine(value);
}
}
}실행 결과
첫 번째 리스트... One Two 두 번째 리스트... Three Four 리스트 추가 후... One Two Three Four
실행 결과를 보면 AddRange() 호출 이후 첫 번째 리스트 뒤에 두 번째 리스트의 요소들이 그대로 이어 붙어 있는 것을 확인할 수 있습니다.
참고 사항
AddRange() 메서드는 ICollection<T> 인터페이스를 구현하는 모든 컬렉션을 인자로 받을 수 있습니다. 따라서 배열이나 LinkedList 등 다른 컬렉션 타입도 동일한 방식으로 리스트에 추가할 수 있습니다. 또한 요소를 하나씩 반복문으로 추가하는 것보다 내부적으로 용량을 효율적으로 관리하므로 성능 면에서도 유리합니다.