如何组合分组中的聚合

时间:2014-03-27 16:18:28

标签: system.reactive

我有一个尾部实现,它将新行从文本文件推送到Subject。该文件包含以下数据:

source1, 1
source2, 3
source1, 2
source1, 1
source3, 10

我正在尝试创建最新聚合的视图,让我们说按源运行总和。

第一行之后:

source1, 1

第二行之后:

source1, 1
source2, 3

第三行之后:

source1, 3
source2, 3

第四行:

source1, 4
source2, 3

在最后一行之后:

第四行:

source1, 4
source2, 3
source3, 10

这是我到目前为止(在LinqPad中):

var source = Observable.Generate<int,Measurment>(0,
    current => current <= 10,
    current => current + 1,
    current => current % 3 == 0
        ? new Measurment { Source = "Source1", Value = current }
        : current != 10
            ? new Measurment { Source = "Source2", Value = current }
            : new Measurment { Source = "Source3", Value = current }
);
var grouped = source
.GroupBy(m => m.Source)
.Select(g =>g.Scan((acc,current) =>
    new Measurment { Source = acc.Source, Value = acc.Value + current.Value }));

grouped.Dump();

}
struct Measurment
{
    public string Source;
    public int Value;

我得到IObservable<IObservable<Measurment>>。内部IObservable具有正确聚合的值。现在我需要结合流并在任何Observables中推出一个有关变化的测量列表,有任何建议如何去做吗?

1 个答案:

答案 0 :(得分:0)

this answerthis one类似,CombineLatest有一个Rxx重载,会将IObservable<IObservable<T>>转换为IObservable<IList<T>>你想要什么。我认为这个函数应该在主Rx库中,因为它非常有用。