Novidades do .NET 9: o método AggregateBy em LINQ
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:
Ao executarmos a aplicação teremos o seguinte retorno:
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!