2016-06-16 16 views
0

比方說,我有一個名爲ItemsIReactiveList<string>從中我想創造一些派生列表DerivedItemsIReactiveList<string>型或IReactiveDerivedList<string>)的唯一不同的項目如何使用Reactive Extensions創建不同項目的派生列表?

Items.CreateDerivedCollection(...)有我想使用的所有鈴聲和哨子,但它似乎沒有過濾出重複項的選項。

我試過Items.Distinct().CreateDerivedCollection(...),但CreateDerivedCollection()Distinct()一起使用時不再跟蹤更改。

我試圖Items.Changed.Throttle(...).Subscribe(_ => ResetImpl())其中ResetImpl清除DerivedItemsItems一個接一個把每個項目,但後來我得到異常,指出枚舉無法完成,因爲集合被修改。 (這主要發生在我在DerivedList上添加依賴關係時)。我可以添加很多鎖,但這看起來很亂。

最後我試圖手動觸發關閉Items.IsEmptyChanged.Where(b => b)Items.ItemsAdded,試圖手動同步ItemsDerivedItems,但在這裏,我遇到了很多的時間問題,其中列表清理和添加項目不按正確的順序一致的發生。

我感覺我錯過了解決這個問題的簡單方法。你怎麼做到這一點?

回答

0

我做這件事的方式,但它不使用IReactiveDerivedList:

var distinctElements = Items.Distinct().ToList(); 
Items.Changed.Subscribe(y => 
{ 
    distinctElements = Items.Distinct().ToList(); 
}); 
相關問題