Tôi có một ObservableCollection và tôi muốn đặt nội dung của IList thành cái này. Bây giờ tôi chỉ có thể tạo ra một thể hiện mới của bộ sưu tập ..:Thêm các phần tử từ IList vào ObservableCollection
public ObservableCollection<Bar> obs = new ObservableCollection<Bar>();
public void Foo(IList<Bar> list)
{
obs = new ObservableCollection<Bar>(list);
}
Nhưng làm thế nào tôi có thể thực sự mang nội dung của IList và thêm nó vào ObservableCollection hiện tại của tôi? Tôi có phải lặp qua tất cả các yếu tố hay không, có cách nào tốt hơn không?
public void Foo(IList<Bar> list)
{
foreach (var elm in list)
obs.Add(elm);
}
Thx! Đã đi với phương pháp ToList.ForEach bây giờ. Sẽ xem xét phương pháp mở rộng nếu tôi cần nhiều hơn một nơi. – stiank81
Phương thức mở rộng 'Enumerable.ToList' không cần phân bổ một' Danh sách 'mới. Tôi có lẽ muốn giới thiệu câu trả lời của RaYell. –
@Richard - đó là sự thật mặc dù dưới mui xe này danh sách mới (danh sách) - mà gọi nội bộ ((ICollection ) danh sách) .CopyTo (T [)) trong hầu hết các triển khai của IList (ví dụ: Danh sách ) cuộc gọi một bản sao mảng (bên ngoài) chức năng bản sao. điều này sẽ khá hiệu quả và chỉ liên quan đến (tối đa) bản sao nguyên tử của các tài liệu tham khảo cần thiết thay vì lặp lại các thành viên. –