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();
}
}