2012-11-20 62 views
12

Cách đơn giản nhất để thêm các phần tử của danh sách này sang danh sách khác là gì?Thêm các phần tử từ danh sách này sang danh sách khác C#

Ví dụ, tôi có hai danh sách: Danh sách

Một chứa x mục Danh mục B, trong đó có mặt hàng y.

Tôi muốn thêm các phần tử từ B vào A để A hiện chứa các mục X + Y. Tôi biết điều này có thể thực hiện bằng cách sử dụng một vòng lặp nhưng có một phương pháp được xây dựng trong này? Hoặc bất kỳ kỹ thuật nào khác?

Trả lời

25

Câu hỏi của bạn mô tả phương pháp List.AddRange, sao chép tất cả các yếu tố của đối số vào đối tượng danh sách mà trên đó nó được gọi.

Như một ví dụ, đoạn

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

in

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] 

cho thấy rằng tất cả các yếu tố của listB đã được thêm vào listA trong AddRange gọi.

5

Để tham gia hai danh sách, bạn có thể làm

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

hoặc

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

Bạn có thể sử dụng sau này để phân công lại listA thay vì:

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

nhưng không có bất kỳ lợi thế cụ thể cho điều đó trên AddRange nếu bạn ổn với việc sửa đổi một trong các danh sách ban đầu ở nơi đầu tiên.

Các vấn đề liên quan