Core.Detach - Dmitry-Bychenko/Amphisbaena GitHub Wiki
Detaches some items which meet conditon into separate ChannelReader.
public static ChannelReader<T> Detach<T>(this ChannelReader<T> reader,
out ChannelReader<T> detached,
Func<T, bool> condition,
ChannelParallelOptions options)using Amphisbaena;
using Amphisbaena.Linq;
...
int[] data = Enumerable
.Range(0, 1000)
.ToArray();
// 1 + 3 + 5 + ...
int sumOdd = await data
.ToChannelReader()
.Detach(out var even, item => item % 2 == 0)
.Aggregate((s, a) => s + a);
// 0 - 2 - 4 - ...
int sumEven = await even
.Aggregate(0, (s, a) => s - a);
int total = sumOdd + sumEven;