C# 4.0 如何合并不同数据的接收流
下面是一个简化的场景,我正试图通过Rx实现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
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是可观察的或是一个列表,我不介意
非常感谢您的帮助
问候
AlanIObservable 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 ...);
}