Core.Detach - Dmitry-Bychenko/Amphisbaena GitHub Wiki

Detach

Detaches some items which meet conditon into separate ChannelReader.

Declaration (has overloads)

public static ChannelReader<T> Detach<T>(this ChannelReader<T> reader,
                                          out ChannelReader<T> detached,
                                              Func<T, bool> condition,
                                              ChannelParallelOptions options)

Example

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;
⚠️ **GitHub.com Fallback** ⚠️