如何使用Rx观察下降沿?

时间:2013-08-14 19:27:12

标签: c# system.reactive

我有一个像8, 7, 6, 5, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 4这样的输入序列。结果应显示为0, 0

是的,这很容易。但是当输入仅为0, 0时,我不希望结果为0, 0

这里的事情是它应该只在前一个值大于零的情况下发布0

1 个答案:

答案 0 :(得分:4)

IObservable<int> source = new[] { 8, 7, 6, 5, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 4 }.ToObservable();
IObservable<int> edges = source.Zip(source.Skip(1), (f, s) => Tuple.Create(f, s))
    .Where(t => t.Item1 > 0 && t.Item2 == 0)
    .Select(t => t.Item2);