2013-02-19 53 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

相關問題