Linq.GroupByAdjacent - Dmitry-Bychenko/Amphisbaena GitHub Wiki
Group adjacent items from ChannelReader.
public static ChannelReader<ChannelGroup<K, V>> GroupByAdjacent<S, K, V>(this ChannelReader<S> reader,
Func<S, K> keySelector,
Func<S, V> valueSelector,
IEqualityComparer<K> comparer,
ChannelParallelOptions options)using Amphisbaena;
using Amphisbaena.Linq;
...
int[] data = new int[] { 1, 3, 5, 2, 4, 7 };
// {9, 6, 7} == {1 + 3 + 5, 2 + 4, 7}
int[] result = await data
.ToChannelReader()
.GroupByAdjacent(item => item % 2)
.Select(group => group.Reader.Aggregate((s, a) => s + a))
.WhenAll()
.ToArrayAsync();