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.
I want to add elements of B to A so that A now contains X+Y items. I know this can done using a loop but is there a built in method for this? Or any other technique?
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.