2012-11-20 28 views
12

Was ist der einfachste Weg, Elemente einer Liste zu einer anderen hinzuzufügen?Hinzufügen von Elementen aus einer Liste zu einer anderen C#

Zum Beispiel, ich habe zwei Listen:

Liste A, die x Artikel Liste B enthält, die y Elemente enthält.

Ich möchte Elemente von B zu A hinzufügen, so dass A jetzt X + Y Elemente enthält. Ich weiß, dass dies mit einer Schleife gemacht werden kann, aber gibt es dafür eine eingebaute Methode? Oder irgendeine andere Technik?

Antwort

25

Ihre Frage beschreibt die Methode List.AddRange, die alle Elemente ihres Arguments in das Listenobjekt kopiert, auf dem sie aufgerufen wird.

Als Beispiel das 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)); 

druckt

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] 

zeigt, dass alle Elemente von listB-listA im AddRange Anruf hinzugefügt wurden.

5

zwei Listen beizutreten, Sie

listA.AddRange(listB); // listA will contain x+y items 

oder

// listC contains x+y items, listA and listB are unchanged. 
var listC = listA.Concat(listB); 

Sie letztere listA stattdessen neu zuzuordnen nutzen könnten tun können:

listA = listA.Concat(listB).ToList(); 

aber es gibt keine Besonderer Vorteil, dass über AddRange wenn Sie in Ordnung mit einem der o ändern sind riginale Listen an erster Stelle.

Verwandte Themen