Linq.GroupBy - Dmitry-Bychenko/Amphisbaena GitHub Wiki
Group ChannelReader items by some key.
public static ChannelReader<ChannelGroup<K, V>> GroupBy<K, V, S>(this ChannelReader<S> reader,
Func<S, K> keySelector,
Func<S, V> valueSelector,
IEqualityComparer<K> keyComparer,
ChannelParallelOptions options)using Amphisbaena;
using Amphisbaena.Linq;
...
int[] data = new int[] {1, 2, 3, 5, 6, 7};
string report = string.Join(System.Environment.NewLine, await data
.ToChannelReader()
.GroupBy(item => item % 2)
.Select(async (group) =>
$"{(group.Key == 0 ? "even" : "odd ")} : {await group.Reader.Aggregate((s, a) => s + a)}")
.WhenAll()
.ToListAsync());