將兩個IObservables連接成與IEnumerables可以使用LINQ Join方法(https://msdn.microsoft.com/en-us/library/bb534675(v=vs.110).aspx)相同的方式連接的最佳方式是什麼?兩個IObservables的內部連接
回答
你不會(不管你是否想要一個連接或笛卡爾產品)。 IObservable<T>
接口用於訂閱通知,僅此而已。
但是,如果您確定IObservable<T>
s也是IEnumerable<T>
s,那麼只需將它們投射到IEnumerable<T>
。不用說,這可能不是最好的設計。
這就像說'IEnumerable'只是讓你獲得序列的下一個元素,沒有什麼比這更簡單了。從技術上講,這是真的,但是在給定任何能夠做這件事情的東西時,你可以執行各種各樣的操作,例如將這些項目中的每一個轉換爲另一個項目,或將這些項目與另一個序列中的項目連接起來。相同的邏輯適用於'IObservable'。 – Servy
那麼最好的方法是在兩個IObservable流中找到相同的元素並將它們推送到另一個IObservable? –
@MT顯然,你應該編輯你的問題,並提供更多關於你真正想要達到的細節。 –
你真的需要使問題更清楚。 IObservable
可以發出隨時間間隔分開的項目。如果你加入Observable-A和Observable-B,並且一個小時後發射物品1,那麼是否滿足條件?
下面的代碼演示了兩個觀測內部聯接假設你不在乎在所有關於項目發出什麼時候,哪一個最先發出,或它們之間的相對時間:
var factorsOfTwo = Observable.Interval(TimeSpan.FromSeconds(1))
.Select(i => i * 3)
.Take(10);
var factorsOfThree = Observable.Interval(TimeSpan.FromSeconds(1))
.Select(i => i * 2)
.Take(10);
var factorsOfBothTwoAndThree = factorsOfTwo.Join(factorsOfThree,
i => Observable.Never<object>(),
i => Observable.Never<object>(),
(a, b) => Tuple.Create(a, b)
)
.Where(t => t.Item1 == t.Item2)
.Select(t => t.Item1);
factorsOfBothTwoAndThree.Subscribe(l => Console.WriteLine(l));
- 1. 兩個內部連接MYSQL
- 2. 內部連接兩個表
- 3. 從兩個表中選擇列(內部連接) - 內部連接
- 4. 合併兩個有序IObservables
- 5. Mysql的內部連接兩個表
- 6. 兩個表之間的內部連接
- 7. SQL多個內部連接兩個表
- 8. 內部連接兩張表
- 9. 用內部連接更新兩個表
- 10. 加入兩個內部連接查詢
- 11. SQL:內部連接兩個大型表
- 12. 內部連接與另一個內部連接的內部連接
- 13. 內部連接的內部連接?
- 14. 從第三個表連接內部連接的兩個表的SQL計數
- 15. SQL:兩個內連接
- 16. Mysql的內連接兩次,使用WHERE上兩個連接
- 17. Django兩個內部聯接
- 18. 從兩個或多個變量的Mysql內部連接?
- 19. 內部連接三個表
- 20. SQL內部連接兩張表
- 21. 內部連接兩行後不工作?
- 22. 連接兩個TSV文件與內部聯接
- 23. 沒有「內部連接」的兩個表中的查詢
- 24. 兩個不同表格的兩個不同字段的內部連接
- 25. 上連接兩個OptionMenu部件的Tkinter
- 26. SQL Server。合併兩個select語句,每個內部連接
- 27. 將兩個內部連接查詢組合成一個過程
- 28. MSSQL兩個內部連接到同一個表
- 29. 內部連接兩個組合列的值
- 30. SQL內部連接具有相同列名的兩個表
一「加入」與笛卡爾積非常不同。你究竟想要什麼? – Servy
謝謝! –