Как я могу получить исторические записи из IObservable? - PullRequest
1 голос
/ 08 февраля 2011

Я наблюдаю за потоком биржевых котировок через Observable, который я наблюдаю, чтобы соответствовать определенному условию, например, -

Observable
.Empty<Quote>
.Where(q => q.Price > watchPrice)
.Subscribe(q => { // do stuff } );

Теперь, в точке "делать вещи", в идеале я хотел бы получить последние 3 "q", которые выходят из предложения where, вроде как BufferWithCount (), но каждая запись в Subscribe () содержит последние 3 записи. Это позволяет сохранить снимок изменений предложения, приведших к оценке условия.

Псевдо-мраморная диаграмма -

in  -  a     b     c     d     e     f
out -  a     ba    cba   dcb   edc   fde

Любые идеи приветствуются

1 Ответ

5 голосов
/ 08 февраля 2011

Как это?

    static void Main()
    {
        new[] {"a", "b", "c", "d", "e", "f"}
            .ToObservable()
            .Scan(Enumerable.Empty<string>(), (x, y) => x.StartWith(y).Take(3))
            .Subscribe(x =>
                           {
                               x.Run(Console.Write);
                               Console.WriteLine();
                           });
        Console.ReadLine();
    }
...