Ich versuche, eine beliebige Anzahl von Streams in Rx, zip, wo Elemente entsprechen, aber möglicherweise außerhalb der Reihenfolge verarbeitet werden. Die Elemente jedes Streams haben eine Kennung, mit der sie miteinander übereinstimmen können. Z.B. Elemente wie folgt aussehen:Rx kombiniert viele Streams durch Beitritt zu einer Eigenschaft
public class Element
{
public string Key {get; set;}
}
Normalerweise zip wird durch ihren Index des Auftretens kombinieren Elemente nur:
|-A-----------A
|--B---------B-
|-----C------C-
|-----ABC-----ABC <- zip
Aber was, wenn wir Elemente nur übereinstimmen soll, die den gleichen Schlüssel teilen? Ich suche nach einer Sequenz, die mehr wie das funktioniert:
(In diesem Beispiel ist der Schlüssel 1 oder 2)
|--2A-------1A----------
|----1B----------2B-----
|------1C-----------2C--
|-----------1ABC----2ABC <- zipped by key 1 & 2 respectively
Ich glaube, dass GroupJoin dieses Szenario passt, aber es dient nur zwei Observable und sie zu verketten war ziemlich schnell außer Kontrolle geraten.
Ich schaute auch auf And/Then/Wann, aber nicht wirklich verstanden, wie es für dieses Szenario zu strukturieren.
Idealerweise möchte ich eine Erweiterungsmethode aufrufen, die ich aufrufen kann, und einen Ergebnisselektor bereitstellen, bei dem die Eingaben des Ergebnisselektors garantiert denselben Schlüssel haben.
Wie würden Sie dieses Problem angehen?