2013-02-19 48 views

回答

8

ObservableCollection<T>overloaded constructor接受IEnumerable<T>作为参数。假设你的LINQ的语句返回MasterPartsList项目的集合:

public ObservableCollection<MasterPartsList> ParentAssemblyBOM 
{ 
    get 
    { 
     var enumerable = this._parentAssemblyBOM 
          .Where(parent => parent.isAssy == true); 

     return new ObservableCollection<MasterPartsList>(enumerable); 
    } 
} 
+0

谢谢!我不能相信我错过了这一点。很好的解释。 – Rachael 2013-02-19 23:06:06

1

你必须明确地建立其在它的的ObservableCollection最简单的是:

public ObservableCollection<MasterPartsList> ParentAssemblyBOM 
{ 
    get {return new ObservableCollection<MasterPartsList>(this._parentAssemblyBOM.Where(parent => parent.isAssy == true)); } 
} 

这是潜在的低效的,因为你正在创造新的集合每次。但是,如果每次返回完全不同的数据,这可能是最简单的解决方案。否则,您必须遍历集合,删除不在返回集中的项目并添加新项目。

+0

我不知道。我的选择是什么?谢谢! – Rachael 2013-02-19 22:51:44

+0

@ UB3571 - 我只是在检查,但这取决于您的使用情况。 – ChrisF 2013-02-19 22:54:48

+0

如果集合真的必须是可观察的,那么这可能是值得的。 – 2013-02-19 22:55:05

相关问题