私は.NETのobservables/LINQを使用しています。observablesを動的に連結する
WebinarMedias = typesRepository.GetWebinarMedias();
これはIObservable<IList<Media>>
次のようになります。私のアプリでは、私は、メディアオブジェクトのリストを取得します。私たちはビュー・モデルに入っています。サブスクリプションを行うビュー(ビュー・モデルで作成された場合はコールド・オブザーバビリティ)をビューに渡します。 それはうまくいきます、その見解はMediasを望んでいます。
しかし、時には、私はパッケージあります取得するには、ビューモデルに:
packagesRepository.GetPackageMedias(package.Id) // IObservable<IList<Media>>
私が欲しいもの:パッケージから
typesRepository.GetMonthlyFocusPackages() // IObservable<IList<Package>>
を、私はメディアシュを得ることができます1つのIObservable<IList<Media>>
変数に含めるすべてのメディアのリストに縮小し、ビューに表示する。より視覚的に
:そのような
input = [package 1 { media 1, media 2 }, package 2 { media 3 }]
output = [media 1, media 2, media 3]
何か:
var allMedias = typesRepository.GetMonthlyFocusPackages()
.SomeMagicSelect(packages => packages.Select(p => packagesRepository.GetPackageMedias(p.Id)));
私はforeachesを行うと、確かに多くの古典的なコードを使用しますが、私が観察寒さを維持し、価値を維持したいことができエンドからエンドまで反応する。
感謝を答えは、これは観察可能なことを破るようだ.Subscribe()はもはや効果がない(私はデータを受け取らない)。 はまた、発現の最終的な署名は、私は 'のIList'(MEDIASのリストの観察ではなく、マスコミの観察)を期待 'Media'あります。 –
@MorganTouvereyQuilling - 私はあなたが最初の 'IObservable>'を求めクエリを与えたが、私は結果を提供するためのより良い方法として、2番目のクエリ 'IObservable 'をお勧めします。そのようにしたくない場合は、2番目のクエリを無視してください。 –
Enigmativity
@MorganTouvereyQuilling - どのように 'typesRepository'オブジェクトをインスタンス化していますか?それは 'IDisposable'ですか?あなたの質問にそのコードを表示できますか? – Enigmativity