2016-05-02 27 views
0

Ich habe eine Sequenz, wo Werte zu zufälligen Zeiten (Echtzeit-Börsenkurse) generiert werden. Ich habe eine Anforderung, den höchsten und niedrigsten Wert der Sequenz zwischen einer Minute zu finden. Ich weiß, dass du so etwas wie Buffer verwenden kannst. Aber das Minutenfenster sollte mit 00 Sekunden beginnen und bei 59 Sekunden enden. z.B. die Minute sollte von 8:00:00 beginnen und um 8:00:59 enden, die zweite Minute sollte von 8:01:00 bis 8:01:59 beginnen. Können wir das mit Rx machen? Vielen Dank. VipterRx-Erweiterung - Erstellen von Minutenleiste aus Sequenz

Antwort

0

glaube ich, das funktionieren würde:

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