Linq.GroupBy - Dmitry-Bychenko/Amphisbaena GitHub Wiki

GroupBy

Group ChannelReader items by some key.

Declaration (has overloads)

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)

Example

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