有沒有辦法做到這一點,而無需迭代列表並將項目添加到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. vb.net datatable to List(of T)3.5
- 3. StackOverflow在List(Of T)
- 4. 序列化VB.Net中的ObservableCollection(of T)
- 5. VB.NET ArrayList to List(of T)打字複製/轉換
- 6. List(Of T)聲明和.add
- 7. 從List(Of T)中刪除元素
- 8. Persistence of ObservableCollection <T> to DataStore
- 9. 將Promise.all([promise of list])轉換爲ramda
- 10. 鑄造到列表(Of T)已在VB.NET
- 11. 使用SyncLock同步訪問List of(T)
- 12. 如何使用Contains(Of T)(T)方法?
- 13. VB.NET(OF T)比較運算符
- 14. 如何在VB.NET中添加項目到IEnumerable(Of T)?
- 15. 在多線程應用程序中使用Synclock語句的ConcurrentQueue(Of T)VS List(Of T)
- 16. 我如何將Model.Tag(有Id和Name)轉換爲「List of Name」?
- 17. 在vb.net中複製List(Of T)Class的最快方法是什麼?
- 18. list(of).find(addressOf t)如何傳入參數?
- 19. 將Nothing轉換爲Nullable(Of)
- 20. Cast ObservableCollection of(unknown)
- 21. 將列表<T>轉換爲ObservableCollection <T>
- 22. 我們可以使用Nullable(of T)屬性使用列表<of T>?
- 23. VB.NET List(Of T) - 我可以用它來保存幾種類型的項目嗎?
- 24. 將一個`TransformingRandomAccessList <T>`轉換爲`List <T>`
- 25. 將可選'List(Of t)'參數的默認值設置爲空列表?
- 26. Binding ObservableCollection of objects trouble
- 27. VB.NET如何在List(Of T)中存儲文本框數據並在調用時檢索所述數據
- 28. 在C++中將T從T轉換爲const T的函數
- 29. 如何用列表(Of)填充DataTable或將列表(Of)轉換爲DataTable?
- 30. VB.NET擴展(Of T)已對象,給出錯誤類型
請參閱相關的問題:http://stackoverflow.com/questions/731626/ilistt-to-observablecollectiont – gideon 2011-02-11 10:45:24