私は、観測可能な3つのイベントストリーム(日付順)(主なイベント、顧客に関するイベント、販売に関するイベント、顧客に関するイベント)各イベントにはvehicleIDとその他のさまざまなプロパティがあります。イベントは1台の車両に表示され、次に別の車両などに表示される可能性があります。基本的に、VehicleIDに基づいて3つの独立したイベントストリームを相互に関連付けるようにしています。私はどのような形式の複雑な観測可能なプログラミングでも新しく、これはむしろ難しいことを証明しています。CombineLatestを使用して複数のグループの3つのイベントストリームを関連付ける
私はストリームのいずれかで車両の新しいイベントが表示されるといつでも関数を呼び出す必要があります(私は基本的にはcombineLatest
と思います)。 1つの車両のイベントだけを含むように各ストリームをフィルタリングすると、私はそれを行うことができます。Where
ですが、どのようにしてGroupBy
を把握してから各グループの最新情報を取得することはできません。私はストリームをマージしようとしていますが、各グループの車両にcombineLatestを組み合わせようとしています。
以下は、作成したいすべてのオブジェクトを、VehcileID = 1の場合にのみ印刷します。私は以下のことをしたいが、すべての車両にしたい。これをすべてのVehcileIDで繰り返した場合、これは私が望む出力を得ることができました。しかし、それはヒップオブザーバブルのようには見えません。すべてが私が目指すべき禅のストリーム状態です。
Observable.CombineLatest(mainEvents.Where(a=>a.VehcileID==1),saleEventsGroup.Where(a=>a.VehcileID==1),customerEventsGroup.Where(a=>a.VehcileID==1),(main, sale, customer)=>{
//Basically flattening various properties from latest state of the 3 streams for current vehicle with some mapping
return ComplexObject(){};})
.Subscribe(Console.WriteLine);
各車両の最新のイベントをどのように組み合わせることができますか?
アドバイスありがとうございます
すべてに共通の基本クラスがありましたので、これはずっと簡単です。それは合併であり、私は考えていないだろう。本当に感謝! – GraemeMiller