【发布时间】:2016-05-17 10:07:06
【问题描述】:
我正在尝试在 Rx 中“压缩”任意数量的流,其中元素对应但可能被无序处理。每个流的元素都有一个标识符,可用于将它们匹配在一起。例如。元素看起来像:
public class Element
{
public string Key {get; set;}
}
通常,zip 只会按出现的索引组合元素:
|-A-----------A
|--B---------B-
|-----C------C-
|-----ABC-----ABC <- zip
但是如果我们只想匹配共享相同 Key 的元素呢?我正在寻找一个更像这样的序列:
(在本例中,键为 1 或 2)
|--2A-------1A----------
|----1B----------2B-----
|------1C-----------2C--
|-----------1ABC----2ABC <- zipped by key 1 & 2 respectively
我觉得 GroupJoin 适合这种情况,但它只服务于两个 Observable,并且链接它们很快就失控了。
我还查看了 And/Then/When,但并不真正了解如何为这种场景构建它。
理想情况下,我想要一个我可以调用的扩展方法并为其提供一个结果选择器,其中结果选择器的输入保证具有相同的 Key。
你会如何解决这个问题?
【问题讨论】:
标签: c# system.reactive reactive-programming