none
Dúvida em consulta linq onde preciso associar nome de coluna com um campo RRS feed

  • 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!

    quinta-feira, 24 de janeiro de 2013 13:35

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
    quinta-feira, 24 de janeiro de 2013 15:14

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
    quinta-feira, 24 de janeiro de 2013 15:14
  • Vitor, muito obrigado pela ajuda. Era exatamente isso que estava faltando na consulta! Obrigado!!
    quinta-feira, 24 de janeiro de 2013 17:29