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

c# – 有条件地组合可观察量,第1张

概述我有两个observable,一个IObservable< AlertData>和另一个IObservable< SoundRequestData>. AlertData包含一个属性Id,它知道哪个SoundRequestData属于它. SoundRequestData只知道自己,并且有一个Id属性,可以匹配AlertData中的属性.我想将这两种数据类型

我有两个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

例:

IObservableviewmodel> alertDataviewmodels = Join(    alertDatas,soundRequestDatas,alertData => alertData.ID,soundRequestData => soundRequestData.ID,(alertData,soundRequestData) => new AlertDataviewmodel    {        AlertData = alertData,SoundRequestData = soundRequestData    });
总结

以上是内存溢出为你收集整理的c# – 有条件地组合可观察量全部内容,希望文章能够帮你解决c# – 有条件地组合可观察量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1263977.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)