加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 有条件地组合可观察量

发布时间:2020-12-15 04:37:38 所属栏目:百科 来源:网络整理
导读:我有两个observable,一个IObservable 和另一个IObservable . AlertData包含一个属性Id,它知道哪个SoundRequestData属于它. SoundRequestData只知道自己,并且有一个Id属性,可以匹配AlertData中的属性. 我想将这两种数据类型组合成一个新类型的AlertDataViewMo

我有两个observable,一个IObservable< AlertData>和另一个IObservable< SoundRequestData>. AlertData包含一个属性Id,它知道哪个SoundRequestData属于它. SoundRequestData只知道自己,并且有一个Id属性,可以匹配AlertData中的属性.

我想将这两种数据类型组合成一个新类型的AlertDataViewModel.但是,我无法确定两个可观察数据中的数据顺序是否相同.我现在不关心输出中的顺序.

我想要的是将AlertData与SoundRequestData匹配.

我现在这样做的方式,虽然有效但很慢,但要等到其中一个observable完成后将所有数据提取到ObservableCollection中.然后我启动另一个observable并匹配Id的.

有没有更好的方法呢?我想这可以表达为以下大理石图:

所以a.id = 1匹配最多3.id = 1,b.id = 2匹配最多4.id = 2等等.

最佳答案
首先让我们为IObserver< T>引入一些扩展方法.

public static IObserver

这只是确保在模式OnNext *(OnError | OnCompleted)中调用观察者,并且只是忽略对它的违反.

我们现在可以通过按键缓冲来自两个序列的值来实现您所描述的运算符,并且只有在两个序列之间存在键匹配时才发出它们.

public static IObservable

例:

IObservable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读