none
Consulta entre tabelas. RRS feed

  • Pergunta

  • Olá a todos estou com um probleminha aqui, quero retornar uma coluna de uma tabela mais ela não aparece quando uso como referência seu nome.

    Gostaria de retornar a quantidade de Saídas em tbSaida, mais infelizmente não estou conseguindo.

    Tentei incluir a coluna fazendo select mais não funcionou pois não retorna um inteiro:

     var t = ctx.tbEntrada.GroupBy(o => new
                    {
                        Categoria = o.tbProduto.tbCategoria.nmCategoria,
                        Produto = o.tbProduto.nmProduto
                    })
                    .Select(g => new
                    {
                        Categoria = g.Key.Categoria,
                        Produto = g.Key.Produto,
                        Quantidade = g.Sum(i => i.quantidadeEntrada),
                        Valor = g.Sum(i => i.valorEntrada),
                        Total = g.Sum(i => i.quantidadeEntrada*i.valorEntrada),
                        Entradas = g.Sum(i => i.Cont),
                        Saidas = g.Sum(i => i.tbSaida.Select(s => new {s.Cont}))
                    }).ToList();
    Diagrama do banco:

    quarta-feira, 12 de novembro de 2014 19:08

Respostas

  •  var t = ctx.tbEntrada.GroupBy(o => new
                    {
                        Categoria = o.tbProduto.tbCategoria.nmCategoria,
                        Produto = o.tbProduto.nmProduto
                    })
                    .Select(g => new
                    {
                        Categoria = g.Key.Categoria,
                        Produto = g.Key.Produto,
                        Quantidade = g.Sum(i => i.quantidadeEntrada),
                        Valor = g.Sum(i => i.valorEntrada),
                        Total = g.Sum(i => i.quantidadeEntrada*i.valorEntrada),
                        Entradas = g.Sum(i => i.Cont),
                        Saidas = g.Sum(i => i.tbSaida.Sum(s => s.Cont))
                    }).ToList();

    Você ta tentando somar um Anonymous Type.

    Correção 

           Saidas = g.Sum(i => i.tbSaida.Sum(s => s.Cont))
    quarta-feira, 12 de novembro de 2014 19:19

Todas as Respostas

  •  var t = ctx.tbEntrada.GroupBy(o => new
                    {
                        Categoria = o.tbProduto.tbCategoria.nmCategoria,
                        Produto = o.tbProduto.nmProduto
                    })
                    .Select(g => new
                    {
                        Categoria = g.Key.Categoria,
                        Produto = g.Key.Produto,
                        Quantidade = g.Sum(i => i.quantidadeEntrada),
                        Valor = g.Sum(i => i.valorEntrada),
                        Total = g.Sum(i => i.quantidadeEntrada*i.valorEntrada),
                        Entradas = g.Sum(i => i.Cont),
                        Saidas = g.Sum(i => i.tbSaida.Sum(s => s.Cont))
                    }).ToList();

    Você ta tentando somar um Anonymous Type.

    Correção 

           Saidas = g.Sum(i => i.tbSaida.Sum(s => s.Cont))
    quarta-feira, 12 de novembro de 2014 19:19
  • Olá Raniel,

     vai precisar fazer um Join entre a tabela entrada e a tabela saida e depois o Groupby, por exemplo :

     
    var join = db.tbEntrada.Join(db.tbSaida,
                                 t1 => t1.ID,
                                 t2 => t2.ID_Saida,
                                 (t1,t2) => new { t1,t2})
                            .GroupBy(//aqui iria continuar
                                     //seu codigo
     Seria assim, e o group by iria continuar com suas regras !
    • Sugerido como Resposta Daniel Brito br quarta-feira, 12 de novembro de 2014 19:22
    • Não Sugerido como Resposta Daniel Brito br quarta-feira, 12 de novembro de 2014 19:22
    quarta-feira, 12 de novembro de 2014 19:22
  • Vlw amigo deu certo.
    quarta-feira, 12 de novembro de 2014 19:36