Novidades do .NET 9: o método AggregateBy em LINQ

Renato Groffe
2 min readMay 15, 2024

--

No primeiro artigo da série sobre o .NET 9 abordei uma novidade envolvendo LINQ: o método CountBy, que permite a contagem de elementos de uma coleção a partir de uma chave que faça parte dos itens que compõem a mesma.

Caso queira visualizar este conteúdo (ou até mesmo revê-lo) acesse o link:

.NET 9: primeiros testes com o Preview 1 + método CountBy em LINQ

Neste novo post retomo a série abordando recursos do .NET 9, demonstrando agora outra nova funcionalidade integrando LINQ: a possibilidade de criar agrupamentos por meio do método AggregateBy.

Considerando a implementação do tipo Estado:

Podemos com o método AggregateBy totalizar as populações por região a partir das instâncias de Estado, similar ao uso de instruções como GROUP BY e SUM com ANSI SQL em um banco de dados relacional:

  • No parâmetro keySelector (linha 43) indicamos uma chave/key que será a base para o agrupamento, fazendo uso para isto de uma expressão lambda;
  • O parâmetro seed (linha 44) permite definir um valor inicial para o total de uma chave, sendo que neste exemplo o valor zero faz mais sentido na inicialização;
  • Uma expressão lambda (linha 45) será então empregada na soma das populações de cada instância de Estado, dentro de sua respectiva região.

O retorno produzido por AggregateBy será um IEnumerable contendo instâncias de KeyValuePair:

Clique nesta imagem para visualizar com uma melhor resolução

Ao executarmos a aplicação teremos o seguinte retorno:

Clique nesta imagem para visualizar com uma melhor resolução

Este exemplo foi disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet9-ConsoleApp-LINQ-AggregateBy

Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet