我有一系列A类事件。 A包含数据对象B的枚举。 我想将序列A映射到C,这样它就是B的平坦序列。 我怎么能这样做?
public class Sandbox
{
public class A
{
public IEnumerable<B> Collection { get; set; }
}
public class B
{
}
private readonly IObservable<A> _sequence;
public Sandbox(IObservable<A> sequence)
{
_sequence = sequence;
}
public IObservable<B> C
{
get { return _sequence.Select(o => /* ... */); }
}
}
答案 0 :(得分:2)
您正在寻找Observable.SelectMany
的{{3}}。这需要一个返回IEnumerable<T>
的投影函数。
将可观察序列的每个元素投影到可观察序列,并将得到的可观察序列展平为一个可观察序列。
public IObservable<B> C
{
get { return _sequence.SelectMany(o => o.Collection); }
}
答案 1 :(得分:0)
尝试使用Enumerable.SelectMany,它需要一系列序列并展平它们。
答案 2 :(得分:0)
你确实想要SelectMany而不是Enumerable SelectMany Observable.SelectMany
public IObservable<B> C
{
get { return _sequence.SelectMany(o => o.Collection); }
}