C#

17 fev, 2022

IEnumerable e GroupBy

Publicidade

Olá pessoal, meu nome é Mauricio Junior e hoje eu vou falar como eu utilizei o GroupBy e o Sum isso porque eu preciso dos valores agrupados e depois somados de acordo com cada linha. Basicamente esse é o problema que estou tendo e preciso resolver para montar um gráfico as ferramentas abaixo:

– Linguagem: C# (sharp)
– Ferramenta: Visual Studio
– Plataforma: Web Razor
– Framework: .NetCore
– Database: SQLServer e EntityFramewok

Como eu utilizei o EntityFramework da Microsoft para consultar dados no banco de dados, o método que consulta os dados retorna pra mim o tipo `IEnumerable<CustomClass>`, veja o código 1.1 que mostra mais sobre o método.

Código 1.1 – Pega todos os doadores

Note que não existe nenhum parâmetro de entrada no método e ele retorna um IEnumerable<Donors>. Aqui eu fiz um SELECT com INNER JOIN usando (from e join), no final usei o OrderBy(x => x.Name) e ThenByDescending(x => x.Year).

Depois que retorno os dados é necessário agrupar os dados por ano. O código 1.2 mostra.

Código 1.2 – GroupBy

Depois de acessar o serviço e pegar todos os dados, precisei fazer um GroupBy pelo ano com o lambida (x => x.Year). Dessa forma eu tenho todos os dados agrupados pelos anos. Agrupado por ano, agora eu preciso somar todos os valores em cada linha agrupada. Para isso é necessário fazer um for e pra cada linha fazer a soma de valores. Com esses dados, consigo gerar o gráfico necessário dentro da aplicação web.

Para somar os valores que eu preciso, precisei utilizar o código 1.3.

Código 1.3 – Somando valores

Dentro do ToList<…> eu peguei o index[i].Sum e coloquei o lambida para somar apenas o campo Money. Com os dados somados em mãos, agora eu posso gerar um gráfico da maneira que eu quiser agrupado por ano. A figura 1.1 mostra como ficou o gráfico. Eu não vou mostrar aqui como eu gerei o gráfico por que não é o propósito do artigo, eu posso falar como fazer em outro artigo se você quiser.

Abraços e até a próxima.