2012-11-20 28 views
12

Jaki jest najprostszy sposób dodawania elementów z jednej listy do drugiej?Dodawanie elementów z jednej listy do drugiej C#

Na przykład, mam dwie listy:

wykazie A, który zawiera x przedmioty listy B, który zawiera y przedmiotów.

Chcę dodać elementy od B do A, aby A zawierał teraz elementy X + Y. Wiem, że można to zrobić za pomocą pętli, ale czy jest tam wbudowana metoda? Lub jakiejkolwiek innej techniki?

Odpowiedz

25

Twoje pytanie opisuje metodę List.AddRange, która kopiuje wszystkie elementy jej argumentu do obiektu listy, na którym jest wywoływana.

Jako przykład, fragment

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)); 

drukuje

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] 

pokazuje, że wszystkie elementy listB dodano listA w wywołaniu AddRange.

5

Aby połączyć dwie listy, można zrobić

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

lub

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

Można wykorzystać ten ostatni mógł przypisać listA zamiast:

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

ale nie ma żadnego Szczególną zaletą jest to, że ponad AddRange jeśli jesteś w porządku z modyfikowaniem jednego z w pierwszej kolejności listy sztywne.

Powiązane problemy