.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!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Renato Groffe
Renato Groffe

Written by Renato Groffe

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

No responses yet

Write a response