获取正在运行的聚合

假设你有一个热门的观察者,你很想保留它的数量。它可能是 IObservable<StockTick>,你想要保持平均交易量的计数。你可以使用 Scan

var tradeVolume = stockTicks.Select(e => e.Price)
    .Scan(0.0m, (aggregated, newtick) => aggregated + newtick)
    .Select((aggregated, index) => aggregated / (index + 1))

现在你可以简单地订阅你的交易量,该交易量在收到每个新的 Tick 时实时更新。

var subscription = tradeVolume.Subscribe(vol => Console.WriteLine("New trade volume is {0}", vol);