Có cách nào để thực hiện điều này mà không cần lặp qua Danh sách và thêm các mục vào ObservableCollection không?Làm cách nào để chuyển đổi một danh sách (của T) thành một ObservableCollection (Of T) trong VB.NET?
Làm cách nào để chuyển đổi một danh sách (của T) thành một ObservableCollection (Of T) trong VB.NET?
Trả lời
Không, không có cách nào để chuyển đổi trực tiếp danh sách thành bộ sưu tập có thể quan sát được. Bạn phải thêm từng mục vào bộ sưu tập. Tuy nhiên, bên dưới là lối tắt để cho phép khung liệt kê các giá trị và thêm chúng cho bạn.
Dim list as new List(of string)
...some stuff to fill the list...
Dim observable as new ObservableCollection(of string)(list)
tôi đến trễ nhưng tôi muốn chia sẻ phần thú vị này để chuyển đổi một danh sách vào một ObservableCollection nếu bạn cần một vòng lặp:
public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> coll)
{
var c = new ObservableCollection<T>();
foreach (var e in coll) c.Add(e);
return c;
}
Bạn có thể vượt qua một bộ sưu tập để các nhà xây dựng ObservableCollection:
List<Product> myProds = ......
ObservableCollection<Product> oc = new ObservableCollection<Product>(myProds);
Bây giờ bạn phải dịch này để VB.NET :)
để làm rõ những gì Junior đang nói (với một ví dụ thêm nếu bạn đang sử dụng LINQ trả về một IEnumerable):
//Applications is an Observable Collection of Application in this example
List<Application> filteredApplications =
(Applications.Where(i => i.someBooleanDetail)).ToList();
Applications = new ObservableCollection<Application>(filteredApplications);
//Create an observable collection TObservable.
ObservableCollection (TObservable) =new ObservableCollection (TObservable)();
//Convert List items(OldListItems) to collection
OldListItems.ForEach(x => TObservable.Add(x));
ObservableCollection<yourobjectname> result = new ObservableCollection<yourobjectname>(yourobjectlist);
vui lòng đặt ở đây mô tả câu trả lời của bạn. –
Mặc dù tôi đang muộn, tôi muốn chia sẻ một nâng cao nhanh chóng để Junior Câu trả lời: cho phép nhà phát triển xác định chức năng chuyển đổi được sử dụng để chuyển đổi các đối tượng sưu tập quan sát từ bộ sưu tập nguồn sang đích.
Giống như sau:
public static ObservableCollection<TDest> ToObservableCollection<TDest, TSource>(this IEnumerable<TSource> coll, Func<TSource, TDest> converter)
{
var c = new ObservableCollection<TDest>();
foreach (var e in coll)
{
c.Add(converter(e));
}
return c;
}
Xem câu hỏi liên quan: http://stackoverflow.com/questions/731626/ilistt-to-observablecollectiont – gideon