這裏我們有一個Observable Sequence ...在.NET中使用Rx。合併觀察對象
var aSource = new Subject<int>();
var bSource = new Subject<int>();
var paired = Observable
.Merge(aSource, bSource)
.GroupBy(i => i).SelectMany(g => g.Buffer(2).Take(1));
paired.Subscribe(g => Console.WriteLine("{0}:{1}", g.ElementAt(0), g.ElementAt(1)));
aSource.OnNext(4);
bSource.OnNext(1);
aSource.OnNext(2);
bSource.OnNext(5);
aSource.OnNext(3);
bSource.OnNext(3);
aSource.OnNext(5);
bSource.OnNext(2);
aSource.OnNext(1);
bSource.OnNext(4);
輸出: 3:3 5:5 2:2 1:1 4:4
我們會得到每一個事件,一對數字具有相同的ID到達時間。
完美!正是我想要的。
一組兩個,按價值配對。
下一個問題....
如何獲得價值序列的的SelectMany /緩衝。
因此1,2,3,4,5通過OnNext()到達aSource和bSource。然後啓動1-5的FireWireLine()。然後當2,3,4,5,6到達時,我們得到另一個console.writeline()。任何線索任何人?
隨即,在Rx論壇建議看.Window()
http://introtorx.com/Content/v1.0.10621.0/17_SequencesOfCoincidence.html
這表面上看起來很完美。就我而言,在這種情況下,我需要一個價值4的窗口。
在查詢序列中它屬於獲取此效果的位置? (a),bSource).GroupBy(i => i).SelectMany(g => g.Buffer(2).Take(1));
輸出 1,2,3,4,5:1,2,3,4,5 2,3,4,5,6 :2,3,4,5,6
此致,
丹尼爾
對於第二部分,數字按順序到達每個源?或隨機順序? –
它可以是隨機的。它們是不同長度「長」過程的結果。 – WebSight