有没有办法做到这一点,而无需迭代列表并将项目添加到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