我有一个序列,其中的值是随机生成的(实时股票市场价格)。我有一个要求,在一分钟的时间段内找到序列的最高值和最低值。我知道你可以用类似Buffer的东西。但是分钟窗口应该从00秒开始,到59秒结束。例如,一分钟应从8:00:00开始并在8:00:59结束,第二分钟应从8:01:00开始至8:01:59。我们能用Rx做到这一点吗?谢谢Vipter
我相信这会奏效:
var query =
source
.Publish(ss =>
ss
.GroupByUntil(
x => x.Timestamp.ToUnixTimeSeconds() / 60,
x => x.Value,
x => ss.Where(s => x.Key != s.Timestamp.ToUnixTimeSeconds() / 60))
.Select(gxs => gxs.ToArray().Select(xs => new
{
min = xs.Min(), max = xs.Max()
})));