Rx如何在时间间隔内获取序列的前n个元素并忽略其他元素

本文关键字:元素 其他 时间 获取 Rx | 更新日期: 2023-09-27 18:00:28

我在程序中使用Rx,并希望为在一分钟时间间隔内占用5个第一元素并忽略其他元素的可观察对象创建订阅。例如,

Sequence: -1---2--3--4-5---6---7-8--------------
Interval: |------------------|------------------|
Result:   |1---2--3--4-5-----|-7-8--------------|

有什么想法吗?提前感谢

Rx如何在时间间隔内获取序列的前n个元素并忽略其他元素

Window+SelectMany+Take在这种情况下可以工作:

var subscription = source.Window(TimeSpan.FromMinutes(1))
      .SelectMany(w => w.Take(5))
      .Subscribe(item => Console.WriteLine(item));