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