简体   繁体   中英

Add elements from one list to another C#

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM