What is the simplest way to add elements of one list to another?
For example, I have two lists:
List A which contains x items List B which contains y items.
Your question describes the List.AddRange method, which copies all the elements of its argument into the list object on which it is called.
As an example, the snippet
List<int> listA = Enumerable.Range(0, 10).ToList();
List<int> listB = Enumerable.Range(11, 10).ToList();
Console.WriteLine("Old listA: [{0}]", string.Join(", ", listA));
Console.WriteLine("Old listB: [{0}]", string.Join(", ", listB));
listA.AddRange(listB);
Console.WriteLine("New listA: [{0}]", string.Join(", ", listA));
prints
Old listA: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Old listB: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
New listA: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
showing that all the elements of listB
were added to listA
in the AddRange
call.
To join two lists, you can do
listA.AddRange(listB); // listA will contain x+y items
or
// listC contains x+y items, listA and listB are unchanged.
var listC = listA.Concat(listB);
You could use the latter to reassign listA
instead:
listA = listA.Concat(listB).ToList();
but there isn't any particular advantage to that over AddRange
if you're okay with modifying one of the original lists in the first place.