使用LINQ Join方法(https://msdn.microsoft.com/en-us/library/bb534675(v=vs.110).aspx)将两个IObservable连接到IEnumerables的最佳方式是什么?
答案 0 :(得分:1)
你真的需要让问题更清晰。 IObservable
可以发出随时间推移的项目。如果您正在加入Observable-A和Observable-B,并且一个小时后一个发出项目1,那是否满足条件?
以下代码演示了两个observable的内部联接,假设您根本不关心项目的发布时间,首先发出的项目,或它们之间的相对时间:
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 :(得分:-1)
您不会(无论您是想要加入还是笛卡尔产品)。 IObservable<T>
界面用于订阅通知,仅此而已。
但是,如果您确定IObservable<T>
也是IEnumerable<T>
s,那么只需将其转换为IEnumerable<T>
。不用说,这可能不是最好的设计。