我有大量的简单对类:
public class Pair { public DateTime Timestamp; public double Value; }
它们按升序时间戳排序。我想在适当的时间为列表中的每个项目触发一个具有值(例如,Action
最佳答案
说 pairs
是你的序列:
var obs = pairs.OrderBy(p => p.Timestamp).ToObservable();
现在obs
是作为有序可观察对象的对。
Observable.Zip(
obs,
obs.Take(1).Concat(obs),
(pair1, pair2) => Observable.Timer(pair1.Timestamp - pair2.Timestamp)
.Select(_ => pair1.Value))
.Concat()
.Subscribe(/* Do something here */);
zip 负责将绝对时间转换为偏移量。它将获取序列并将其与自身连接,但偏移一个,如下所示
Original 1--2--4--7--11
Offset 1--1--2--4--7--11
Joined 0--1--2--3--4
然后将这个新值放入 Observable.Timer
中延迟它适当的量。决赛Concat
将 IObservable<IObservable<double>>
的结果展平进入 IObservable<double>
.这假定您的序列是有序的。
关于c# - 使用 RX 在不同时间触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440451/