RX extension-создание минутного бара из последовательности

У меня есть последовательность, где значения генерируются в случайное время (цены на фондовом рынке в реальном времени). У меня есть требование найти самое высокое и самое низкое значение последовательности между периодом в одну минуту. Я знаю, что вы можете использовать что-то вроде буфера для этого.
Но минутное окно должно начинаться с 00 секунд и заканчиваться на 59 секунд. например, минута должна начинаться с 8: 00:00 и заканчиваться в 8:00:59 вторая минута должна начинаться с 8:01:00 до 8:01: 59. Можем ли мы сделать это с Rx? Спасибо. Vipter

1 ответ

  1. Я считаю, что это будет работать:

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