1

当我收到关于它的更改的通知时,我需要使用 Rx 检索先前由序列生成的所有对象以及新对象的方法。我认为这并不常见,因为大多数系统只需要未处理的条目,但我的情况需要整套新旧值才能工作。

有可能以某种方式实现这一目标吗?我找不到任何类似的例子,而且似乎没有任何方法可以做到这一点。

4

1 回答 1

2

您可以为此使用Scan扩展方法

IObservable<T> source = ...;
IObservable<List<T>> history = source
    .Scan(new List<T>(), (list, item) => { list.Add(item); return list; });

如果source发出标记A, B, C
则分别history发出标记[A], 。[A B][A, B, C]

如果您不希望所有发出history的值都相同List<T>,您可以稍微修改对以下的调用Scan

IObservable<List<T>> history = source
    .Scan(new List<T>(), (list, item) => list.Concat(new[]{ item }).ToList());
于 2013-09-04T20:07:22.960 回答