public delegate void QuoteChangeEvent(IQuote q);
var priceChangedObservable = Observable.FromEvent<QuoteChangeEvent, IQuote>
(handler =>
{
QuoteChangeEvent qHandler = (e) =>
{
handler(e);
};
return qHandler;
},
qHandler => api.MAPI.OnQuoteChange += qHandler,
qHandler => api.MAPI.OnQuoteChange -= qHandler);
var grouped = priceChangedObservable
.GroupBy(instrument => instrument.Symbol);
То есть grouped
из type
IObservable<IGroupedObservable<string, IQuote>>
Два вопроса.
1) Я пытался
grouped.SortBy(instrument => instrument.Symbol);
Но SortBy
, кажется, не существует?
2) Скажем, есть два символа, которые входят, GOOG и AAPLв grouped
.Как мне использовать оператор Zip
, чтобы я не мог получить правильный синтаксис, когда у меня Subscribe
есть Tuple<IQuote, IQuote>
?
.Что-то вроде:
Observable.Zip(?, ?, (a, b) => Tuple.Create(a, b))
.Subscribe(tup => Console.WriteLine("Quotes: {0} {1}", tup.item1, tup.item2));
РЕДАКТИРОВАТЬ 1
Я почти получил это:
var first = grouped.Where(group => group.Key == "GOOG").FirstAsync();
var second = grouped.Where(group => group.Key == "AAPL").FirstAsync();
Observable.Zip(first, second, (a, b) => Tuple.Create(a, b))
.Subscribe(tup => Console.WriteLine("Quotes: {0} {1}", tup.Item1, tup.Item2));
Проблема в том, что tup
нетип <IQuote, IQuote>
, но типа:
Tuple<IGroupedObservable<string, IQuote>, IGroupedObservable<string, IQuote>>