将两个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. Mysql的内部连接两个表
- 5. SQL:内部连接两个大型表
- 6. 用内部连接更新两个表
- 7. 加入两个内部连接查询
- 8. 内部连接与另一个内部连接的内部连接
- 9. 内部连接的内部连接?
- 10. Mysql的内连接两次,使用WHERE上两个连接
- 11. Django两个内部联接
- 12. 从两个或多个变量的Mysql内部连接?
- 13. 内部连接三个表
- 14. SQL内部连接两张表
- 15. MSSQL两个内部连接到同一个表
- 16. SQL Server。合并两个select语句,每个内部连接
- 17. SQL内部连接两个以上的表
- 18. 内部连接两个表返回空的结果
- 19. SQL内部连接具有相同列名的两个表
- 20. 从内部连接的两个表中删除
- 21. 林克查询与内部选择在EF的两个连接
- 22. 两个表中的Mysql内部连接计数
- 23. 内连接有两个选择的sql
- 24. MySQL内部连接?
- 25. HQL:内部连接
- 26. 连接内部API
- 27. MySQL内部连接?
- 28. JPQL内部连接
- 29. 内部连接mysql?
- 30. 内连接 - 使用相同连接的两个值!
一“加入”与笛卡尔积非常不同。你究竟想要什么? – Servy
谢谢! –