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