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

Renato Groffe
4 min readFeb 21, 2024

A Microsoft disponibilizou na última terça (13/02/2024) o Preview 1 do .NET 9, o primeiro release para avaliação da nova versão da plataforma .NET (com lançamento previsto até o momento para Novembro/2024). Informações sobre algumas das novidades previstas podem ser encontradas na seguinte postagem do blog oficial do .NET:

Além de um escopo que tradicionalmente cobre questões de performance, segurança e uma maior produtividade na codificação, esse post destaca ainda que outros 2 focos da nova versão da plataforma .NET serão melhorias voltadas à implementação de soluções cloud native e de projetos baseados em Inteligência Artificial.

Já instalei o .NET 9 Preview 1 em um ambiente Windows que uso para testes:

Essa instalação pode ser obtida através do seguinte link:

https://dotnet.microsoft.com/en-us/download/dotnet/9.0

Como sempre faço em meu primeiro artigo sobre uma nova versão da plataforma .NET, recomendo o uso de um arquivo global.json a fim de configurar qual release será adotado como default. Detalhes sobre como fazer isto podem ser encontrados no artigo:

.NET Core: definindo a versão do SDK utilizada pelo comando dotnet new

Em um vídeo recente publicado no Canal .NET discuti com alguns amigos o que podemos esperar do .NET 9, além de demonstrar 2 novas funcionalidades envolvendo a serialização de dados no formato JSON:

  • As propriedades IndentCharacter e IndentSize no tipo JsonSerializerOptions;
  • Assumindo as opções de serialização default do ASP.NET Core com JsonSerializerOptions.Web.

A gravação está disponível no YouTube e pode ser assistida gratuitamente:

Nas próximas seções abordarei também o suporte do Visual Studio 2022 a esta nova versão da plataforma .NET, bem como uma das novidades que integram LINQ (o método CountBy).

Suporte no Visual Studio 2022

No Visual Studio 2022 versão 17.10.0 Preview 1.0 o Preview 1 do .NET 9 aparecerá como uma das opções disponíveis para a implementação de novos projetos:

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

O método CountBy em LINQ

Um dos novos Extension Methods disponibilizados para LINQ chama-se CountBy, permitindo que se realize a contagem de elementos por chaves e retornando para isto uma coleção de instâncias do tipo KeyValuePair.

Considerando o tipo Localidade:

E um array baseado nesta classe, em que constarão diversas instâncias representando cidades brasileiras:

var localidades = new Localidade[]
{
new Localidade { NomeCidade = "Belo Horizonte", SiglaEstado = "MG" },
new Localidade { NomeCidade = "Campinas", SiglaEstado = "SP" },
new Localidade { NomeCidade = "Feira de Santana", SiglaEstado = "BA" },
new Localidade { NomeCidade = "Juiz de Fora", SiglaEstado = "MG" },
new Localidade { NomeCidade = "Niterói", SiglaEstado = "RJ" },
new Localidade { NomeCidade = "Ouro Preto", SiglaEstado = "MG" },
new Localidade { NomeCidade = "Porto Alegre", SiglaEstado = "RS" },
new Localidade { NomeCidade = "Ribeirão Preto", SiglaEstado = "SP" },
new Localidade { NomeCidade = "Rio de Janeiro", SiglaEstado = "RJ" },
new Localidade { NomeCidade = "Salvador", SiglaEstado = "BA" },
new Localidade { NomeCidade = "Santos", SiglaEstado = "SP" },
new Localidade { NomeCidade = "São Paulo", SiglaEstado = "SP" },
new Localidade { NomeCidade = "Uberlândia", SiglaEstado = "MG" },
new Localidade { NomeCidade = "Belém", SiglaEstado = "PA" }
};

Podemos gerar uma lista com as contagens de cidades tendo por chaves seus respectivos estados (propriedade SiglaEstado de Localidade), através do uso conjunto dos métodos Select e CountBy:

IEnumerable<KeyValuePair<string, int>> contagemLocalidades =
localidades.Select(estado => estado.SiglaEstado!)
.CountBy(siglaEstado => siglaEstado);

Na listagem seguinte temos o arquivo Program.cs de uma Console Application, com esses trechos de código combinados:

O resultado da execução deste exemplo pode ser observado na próxima listagem:

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

Este projeto foi disponibilizado no GitHub:

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

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

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