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

时间:2016-05-02 11:22:18

标签: time system.reactive intervals minute

我有一个序列,其中随机时间生成值(实时股票市场价格)。我要求在一分钟的时间段内找到序列的最高值和最低值。我知道你可以使用像Buffer这样的东西。 但是分钟窗口应该以00秒开始并以59秒结束。例如分钟应从8:00:00开始,到8:00:59结束,第二分钟应从8:01:00到8:01:59开始。我们可以用Rx做到这一点吗?谢谢。 Vipter

1 个答案:

答案 0 :(得分:0)

我相信这会奏效:

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()
                })));