将带有集合的对象序列变成平面序列
Turn sequence of objects with collection into a flat sequence
我有一系列 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 => /* ... */); }
}
}
尝试使用 Enumerable.SelectMany,它获取一系列序列并将它们展平。
您确实需要 SelectMany 但不需要 Enumerable SelectMany Observable.SelectMany
public IObservable<B> C
{
get { return _sequence.SelectMany(o => o.Collection); }
}
您正在寻找 this overload 个 Observable.SelectMany
。这需要一个 returns 和 IEnumerable<T>
.
的投影函数
Projects each element of an observable sequence to an observable sequence and flattens the resulting observable sequences into one observable sequence.
public IObservable<B> C
{
get { return _sequence.SelectMany(o => o.Collection); }
}
我有一系列 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 => /* ... */); }
}
}
尝试使用 Enumerable.SelectMany,它获取一系列序列并将它们展平。
您确实需要 SelectMany 但不需要 Enumerable SelectMany Observable.SelectMany
public IObservable<B> C
{
get { return _sequence.SelectMany(o => o.Collection); }
}
您正在寻找 this overload 个 Observable.SelectMany
。这需要一个 returns 和 IEnumerable<T>
.
Projects each element of an observable sequence to an observable sequence and flattens the resulting observable sequences into one observable sequence.
public IObservable<B> C
{
get { return _sequence.SelectMany(o => o.Collection); }
}