首页 新闻 会员 周边

请问怎样将List<T>或IList<T>转成ObservableCollection<T> ??

0
悬赏园豆:5 [已解决问题] 解决于 2009-09-03 15:25

网上有人说可以通过Concat 扩展方法实现,可是本人尝试之后,不知为何好像实现不了,代码如下:

public Page()
        {
            InitializeComponent();
            List<UserInfo> s = new List<UserInfo>();

            s .Add(new UserInfo("A.", "Zero", "12 North Third Street, Apartment 45", false));
            s .Add(new UserInfo("B.", "One", "34 West Fifth Street, Apartment 67", false));

            ObservableCollection<UserInfo> oc = new ObservableCollection<UserInfo>();
            oc.Concat<UserInfo>(s);
        }
望高手们指教,谢谢了!^_^

木子muzi的主页 木子muzi | 菜鸟二级 | 园豆:210
提问于:2009-09-02 10:11
< >
分享
最佳答案
0

可以采用如下的方法:(使用你例子里的变量进行说明)

ObservableCollection<UserInfo> oc = new ObservableCollection<UserInfo>();

s.ForEach(x => oc.Add(x)); 

这样就能转换了。

收获园豆:5
Kinglee | 老鸟四级 |园豆:3158 | 2009-09-02 13:48
呵呵,问题解决了,谢谢了~ ps:还想请问一下Kinglee ,网上所说的Concat扩展方法是不是不能解决这个转换问题?如果也能实现,可不可以麻烦告诉我一下,为什么我用了之后实现不了呢??呵呵,万分感谢!!!
木子muzi | 园豆:210 (菜鸟二级) | 2009-09-03 15:24
其他回答(3)
0

ObservableCollection<UserInfo> oc = new ObservableCollection<UserInfo>(s);

如果一定要Concat,则oc = oc.Concat(s);

Gray Zhang | 园豆:17610 (专家六级) | 2009-09-02 10:34
写一个Extension Method更好 public static class CollectionExtensions { 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; } }
支持(0) 反对(0) Vincent Yang | 园豆:573 (小虾三级) | 2009-09-04 20:34
0

如果使用自己的扩展方法的话 在通知上会出部分问题,比如在listbox to drag 的时候就会出现异常!

也就是说 通过add 会有点问题 

EDiaos | 园豆:205 (菜鸟二级) | 2011-12-30 09:53
0

可以采用如下的方法:(使用你例子里的变量进行说明)

ObservableCollection<UserInfo> oc = new ObservableCollection<UserInfo>();

s.ForEach(x => oc.Add(x)); 

这样就能转换了。

Kinglee老师,我的问题是:如果反过来,将ObserableCollection<T>转换成List<T>,是不是也可以仿照您的方法,比如:

 

oc.ForEach(x => s.Add(x)); 

ly_he | 园豆:202 (菜鸟二级) | 2016-04-29 09:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册