比方說,我有一個名爲Items
的IReactiveList<string>
從中我想創造一些派生列表DerivedItems
(IReactiveList<string>
型或IReactiveDerivedList<string>
)的唯一不同的項目。如何使用Reactive Extensions創建不同項目的派生列表?
Items.CreateDerivedCollection(...)
有我想使用的所有鈴聲和哨子,但它似乎沒有過濾出重複項的選項。
我試過Items.Distinct().CreateDerivedCollection(...)
,但CreateDerivedCollection()
與Distinct()
一起使用時不再跟蹤更改。
我試圖Items.Changed.Throttle(...).Subscribe(_ => ResetImpl())
其中ResetImpl
清除DerivedItems
和Items
一個接一個把每個項目,但後來我得到異常,指出枚舉無法完成,因爲集合被修改。 (這主要發生在我在DerivedList
上添加依賴關係時)。我可以添加很多鎖,但這看起來很亂。
最後我試圖手動觸發關閉Items.IsEmptyChanged.Where(b => b)
和Items.ItemsAdded
,試圖手動同步Items
和DerivedItems
,但在這裏,我遇到了很多的時間問題,其中列表清理和添加項目不按正確的順序一致的發生。
我感覺我錯過了解決這個問題的簡單方法。你怎麼做到這一點?