Usuário com melhor resposta
Dúvida em consulta linq onde preciso associar nome de coluna com um campo

Pergunta
-
Olá pessoal,
estou com uma dúvida em uma consulta linq que estou fazendo onde preciso que ela me retorne o resultado agrupado por nome de produto juntamente com a somatória dos produtos vendidos.
List<RelatorioVisaoParcial> relatorioAuxiliar = new List<RelatorioVisaoParcial>(); try { var lista = from row in dt.AsEnumerable() group row by row.Field<int>("id-veiculo") into g select new RelatorioVisaoParcial() {NomeVeiculo = "ola", ValorTotalVendaPeriodo = g.Sum(row => row.Field<decimal>("vl-apuracao")) }; relatorioAuxiliar = lista.ToList(); }
No caso onde tem "NomeVeiculo = "ola" preciso que esse nome seja o resultado obtido dos diferentes produtos (total são 4 produtos). Por ex: em "lista" deveria vir
NomeVeiculo="Produto 1", ValorTotalVendaPeriodo = 10000,00
NomeVeiculo="Produto 2", ValorTotalVendaPeriodo = 12000,00 e assiim por diante.
Pesquisei muito mas até agora não encontrei uma solução satisfatória.
Obrigado a todos!
Respostas
-
Osmar,
Se você agrupou pelo "id-veiculo", não concorda que o nome vai ser o mesmo para os quatro registros ?? Usando método FirstOrDefault() obtenha apenas o nome de um dos registros, exemplo:
List<RelatorioVisaoParcial> relatorioAuxiliar = new List<RelatorioVisaoParcial>(); try { var lista = from row in dt.AsEnumerable() group row by row.Field<int>("id-veiculo") into g select new RelatorioVisaoParcial() { NomeVeiculo = g.FirstOrDefault().Field<string>("NomeVeiculo"), ValorTotalVendaPeriodo = g.Sum(row => row.Field<decimal>("vl-apuracao")) }; relatorioAuxiliar = lista.ToList(); }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta Osmar Takashi quinta-feira, 24 de janeiro de 2013 17:28
- Editado Vitor Mendes quinta-feira, 24 de janeiro de 2013 18:36
Todas as Respostas
-
Osmar,
Se você agrupou pelo "id-veiculo", não concorda que o nome vai ser o mesmo para os quatro registros ?? Usando método FirstOrDefault() obtenha apenas o nome de um dos registros, exemplo:
List<RelatorioVisaoParcial> relatorioAuxiliar = new List<RelatorioVisaoParcial>(); try { var lista = from row in dt.AsEnumerable() group row by row.Field<int>("id-veiculo") into g select new RelatorioVisaoParcial() { NomeVeiculo = g.FirstOrDefault().Field<string>("NomeVeiculo"), ValorTotalVendaPeriodo = g.Sum(row => row.Field<decimal>("vl-apuracao")) }; relatorioAuxiliar = lista.ToList(); }
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta Osmar Takashi quinta-feira, 24 de janeiro de 2013 17:28
- Editado Vitor Mendes quinta-feira, 24 de janeiro de 2013 18:36
-