C# 4.0 如何合并不同数据的接收流

C# 4.0 如何合并不同数据的接收流,c#-4.0,system.reactive,C# 4.0,System.reactive,下面是一个简化的场景,我正试图通过Rx实现 public class A { public int Id { get; set; } public string Name { get; set; } }; public class B { public int Id { get; set; } public int AId { get; set; } public string SomeProperty { get; set; } }; public

下面是一个简化的场景,我正试图通过Rx实现

public class A
{
    public int Id { get; set; }
    public string Name { get; set; }
};

public class B
{
    public int Id { get; set; }
    public int AId { get; set; }
    public string SomeProperty { get; set; }
};

public class C
{
    public A MyA { get; set; }
    public IObservable<B> MyBObservable { get; set; }
}
如果有帮助的话,obsA是一个冷可观察的,并且将完成。obsB可以是热的,也可以是冷的。如果C是可观察的或是一个列表,我不介意

非常感谢您的帮助

问候 Alan

IObservable obsA=可观察。创建{…};
IObservable obsB=可观测。创建{…};
var c=来自obsA中的a
在a.Id等于b.Id的obsB中加入b
选择新的C(a,b);

经过更多的实验,我得出了以下结论

obsA.Subscribe(a => new C (a, obsB.Where(x => x.AId == a.Id)));
然后在C的构造函数中

public C (MyA a, IObservable<B> obsB)
{
    MyA = a;
    obsB.Subscribe(o => .. do something ...);
}
public(MyA a a,IObservable obsB)
{
MyA=a;
obsB.Subscribe(o=>…做点什么…);
}
在我的版本中,类C不保存可观察的,而是保存对返回的每个项目进行操作的结果

IObservable<A> obsA = Observable.Create<A> { ... };
IObservable<B> obsB = Observable.Create<B> { ... };

var c = from a in obsA
        join b in obsB on a.Id equals b.Id
        select new C(a, b);
obsA.Subscribe(a => new C (a, obsB.Where(x => x.AId == a.Id)));
public C (MyA a, IObservable<B> obsB)
{
    MyA = a;
    obsB.Subscribe(o => .. do something ...);
}