Rx扩展-从序列创建分钟栏



我有一个序列,其中的值是随机生成的(实时股票市场价格)。我有一个要求,在一分钟的时间段内找到序列的最高值和最低值。我知道你可以用类似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()
                })));

最新更新