为LINQ RX中的不同输入定义不同的路径
本文关键字:定义 路径 输入 LINQ RX | 更新日期: 2023-09-27 17:54:10
我正在学习LINQ RX,很难理解如何创建处理程序。
假设我有一个IObservable<Entity> source
,它提供了一个实体流。现在我想定义不同的策略来处理这些Entity
对象取决于它的Entity.Group
属性。我试着:
source.Where(e=> e.Group = "first").Do(e=> whatever).Subscribe();
它起作用了。问题是当我添加第二条路径时:
source.Where(e=> e.Group == "first").Do(whateverWithFirst).Subscribe();
source.Where(e=> e.Group == "second").Do(whateverWithSecond).Subscribe();
然后事情发生了两次,并且我有一些与source
如何实现有关的例外。
正确的做法是什么?
您可以使用Observable.RefCount()
以便在两个查询之间共享订阅:
var publishedSource = source.Publish().RefCount();
publishedSource.Where(e=> e.Group == "first").Do(whateverWithFirst).Subscribe();
publishedSource.Where(e=> e.Group == "second").Do(whateverWithSecond).Subscribe();