有沒有辦法做到這一點,而無需迭代列表並將項目添加到ObservableCollection?如何在VB.NET中將List(Of T)轉換爲ObservableCollection(Of T)?
19
A
回答
38
不,沒有辦法直接將列表轉換爲可觀察集合。您必須將每個項目添加到集合中。但是,下面是允許框架枚舉值併爲您添加它們的快捷方式。
Dim list as new List(of string)
...some stuff to fill the list...
Dim observable as new ObservableCollection(of string)(list)
18
我來晚了,但我想,如果你需要一個循環來分享這個有趣的一塊用於將列表轉換成的ObservableCollection:
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;
}
你可以傳遞一個收集到的ObservableCollection構造:
List<Product> myProds = ......
ObservableCollection<Product> oc = new ObservableCollection<Product>(myProds);
現在,你必須將這些轉化爲VB.NET :)
2
到澄清少年是說(與添加的例子,如果你正在使用LINQ返回一個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);
2
//Create an observable collection TObservable.
ObservableCollection (TObservable) =new ObservableCollection (TObservable)();
//Convert List items(OldListItems) to collection
OldListItems.ForEach(x => TObservable.Add(x));
0
ObservableCollection<yourobjectname> result = new ObservableCollection<yourobjectname>(yourobjectlist);
1
即使我遲到了,我想分享一個快速增強Junior答案:讓開發人員定義用於將源集合中的可觀察集合對象轉換爲目標集合對象的轉換器函數。
類似如下:
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;
}
相關問題
- 1. ObservableCollection(Of T)vs BindingList(Of T)?
- 2. List of(T)search vb.net
- 3. vb.net datatable to List(of T)3.5
- 4. StackOverflow在List(Of T)
- 5. 序列化VB.Net中的ObservableCollection(of T)
- 6. List of(T)and Eval
- 7. VB.NET ArrayList to List(of T)打字複製/轉換
- 8. vb.net無法將Dictionary(Of String,List(Of String))轉換爲Object
- 9. List(Of T)聲明和.add
- 10. 如何使用VB.NET IList(Of T).Max
- 11. 從List(Of T)中刪除元素
- 12. Persistence of ObservableCollection <T> to DataStore
- 13. 鑄造到列表(Of T)已在VB.NET
- 14. 如何使用Contains(Of T)(T)方法?
- 15. 使用SyncLock同步訪問List of(T)
- 16. 通用擴展方法,List(of T)
- 17. 將Promise.all([promise of list])轉換爲ramda
- 18. VB.NET List(Of String)(「System.NullReferenceException」)
- 19. VB.NET(OF T)比較運算符
- 20. VB.NET - 使用HasValue = False創建Nullable(Of T)
- 21. IEquatable(Of T)/ IEqualityComparer(Of T)沒有被調用
- 22. 如何在VB.NET中添加項目到IEnumerable(Of T)?
- 23. 在多線程應用程序中使用Synclock語句的ConcurrentQueue(Of T)VS List(Of T)
- 24. VB.NET List(Of String)to Long()
- 25. 將Func(Of Type,Boolean)轉換爲表達式(Of Func(Of Type,Boolean))?
- 26. list(of).find(addressOf t)如何傳入參數?
- 27. 如何正確使用List(Of T).Contains方法?
- 28. 在vb.net中複製List(Of T)Class的最快方法是什麼?
- 29. 我如何將Model.Tag(有Id和Name)轉換爲「List of Name」?
- 30. 如何將IQueryable轉換爲類型List(Of Orders)
請參閱相關的問題:http://stackoverflow.com/questions/731626/ilistt-to-observablecollectiont – gideon 2011-02-11 10:45:24