LINQ: Exemplo de consulta com group by e Sum

Imagine que você tenha a seguinte estrutura para armazenamento dos dados de Orçamentos de uma Oficina Mecânica fictícia:

Atributo Tipo de Dados
Id Integer
OficinaId Integer
Cliente String
Aprovado String
ValorPecas Decimal
ValorMaoObra Decimal

Imagine agora que essa estrutura esteja alimentada com da seguinte forma:

Id OficinaId Cliente Aprovado ValorPecas ValorMaoObra
1 1 Cliente 1 S 200 90
2 1 Cliente 2 S 233 80
3 2 Cliente 3 N 100 250
4 2 Cliente 4 S 400 120
5 1 Cliente 5 N 250 130

Sua necessidade seria conseguir realizar uma consulta LINQ para identificar qual o valor de Mão de Obra e qual valor de Peças, dos orçamentos aprovados e não aprovados, que uma determinada oficina tem, ou seja, você precisa de um conjunto de dados como o do exemplo abaixo:

Aprovado ValorPecas ValorMaoObra
N 250 130
S 433 170

Dado o contexto do problema e sabendo que seu conjunto de dados original é identificado pelo nome Orcamentos, então você teria que realizar a seguinte consulta LINQ para consolidar os dados:


int idOficina = 1;
var valores = (from o in Orcamentos
     where o.OficinaId == idOficina
     group o by new { o.Aprovado } into g
     select new
              {
                Aprovado = g.Key.Aprovado,
                ValorPecas = g.Sum(x => x.ValorPecas),
                ValorMaoObra = g.Sum(y => y.ValorMaoObra)
              }).ToList();

Grande abraço,
Eduardo Henrique Rizo

[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]

Post relacionado: Consulta LINQ com Group by

Deixe um comentário