DynamicData Rx-Main System.Linq System.Reactive.Linq System.Reactive.Threading.Tasks System.Threading.Tasks DynamicData DynamicData.Binding void Main() { var cache = new SourceCache(i => i % 5); cache.Connect() //.Transform(nr => new Container(nr)) // Transform works with and without sort .Convert(nr => new Container(nr)) // Convert works without sort, but breaks at first Remove if Sort operation is applied .Sort(SortExpressionComparer.Ascending(c => c.Nr)) .AsObservableCache() .Connect() .QueryWhenChanged(_ => _.Items) .Subscribe(x => x.Dump(), ex => ex.Dump()) ; cache.AddOrUpdate(1); cache.AddOrUpdate(2); cache.AddOrUpdate(6); cache.Remove(key: 2); cache.Remove(item: 1); cache.AddOrUpdate(6); cache.Dispose(); } // Define other methods and classes here class Container { public Container(int nr) { Nr = nr; } public int Nr { get;} public override string ToString() { return Nr.ToString(); } }