1
resposta

Somando o valor de nota fiscal por cidade

Gostaria de somar os valores das notas fiscais por cidade, porém estou com dificuldade no momento de retornar a soma. Consigo agrupar com o código abaixo:

var query3 = from nf in contexto.NotaFiscals
                            join inf in contexto.ItemNotaFiscals
                            on nf.NotaFiscalId equals inf.NotaFiscalId
                            group nf by nf.Cidade into cidades
                            select cidades;

                foreach (var cidade in query3)
                {
                    Console.WriteLine(cidade.Key);
                }

Alguém poderia ajudar?

1 resposta

Oi Gustavo, tudo bem?

Você está quase lá! Consegui fazer o que você quer implementar, mudando algumas linhas:

            var agrupamento = 
                         from nf in contexto.NotaFiscals
                         join inf in contexto.ItemNotaFiscals
                            on nf.NotaFiscalId equals inf.NotaFiscalId
                         group inf by nf.Cidade into cidades
                         select new
                         {
                             Cidade = cidades.Key,
                             SomaNotas = cidades.Sum(x => x.Valor),
                         };

            foreach (var item in agrupamento)
            {
                Console.WriteLine("Cidade: {0}, Soma das Notas: {1}", item.Cidade, item.SomaNotas);
            }

Veja que o "pulo do gato" é agrupar por nf.Cidade, mas passando inf, e não nf para o agrupamento:

group inf by nf.Cidade into cidades

Essa é uma das coisas que causam um pouco de confusão na hora de montar um agrupamento com LINQ (eu mesmo esqueço disso, às vezes).

Um abraço!