Linq.GroupByAdjacent - Dmitry-Bychenko/Amphisbaena GitHub Wiki

GroupByAdjacent

Group adjacent items from ChannelReader.

Declaration (has overloads)

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)

Example

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