groupByEx<TKey> method

Iterable<GroupedIterable<TKey, T>> groupByEx<TKey>(
  1. TKey keySelector(
    1. T item
    )
)

a better version of groupBy that can be chained easily for multi-level groups

Implementation

Iterable<GroupedIterable<TKey, T>> groupByEx<TKey>(
  TKey keySelector(T item),
) {
  final res = <TKey, List<T>>{};
  for (var item in this) {
    (res[keySelector(item)] ??= <T>[]).add(item);
  }
  return res.entries.map((e) => GroupedIterable(e.key, e.value));
}