【发布时间】:2017-11-29 10:25:14
【问题描述】:
我使用 .NET 的 observables / LINQ,我想做一件非常简单的事情。在我的应用中,我得到了媒体对象的列表:
WebinarMedias = typesRepository.GetWebinarMedias();
这将是一个IObservable<IList<Media>>。我们在一个视图模型中,我将它传递给一个视图,该视图将执行订阅(这些是在视图模型中创建时的冷可观察对象)。
那里,没关系,视图需要媒体。
但有时我有包:
typesRepository.GetMonthlyFocusPackages() // IObservable<IList<Package>>
从包中,我可以获得媒体:
packagesRepository.GetPackageMedias(package.Id) // IObservable<IList<Media>>
我想要什么: 在视图模型中,获取包,简化为它们包含在一个 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 并使用更经典的代码,但我想保持可观察的冷态并保持从头到尾的反应值。
【问题讨论】:
标签: c# linq observable system.reactive