Usuário com melhor resposta
Consulta entre tabelas.

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:
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))
- Editado Gustavo A. Gonçalves quarta-feira, 12 de novembro de 2014 19:25
- Marcado como Resposta Raniel Nogueira quarta-feira, 12 de novembro de 2014 19:36
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))
- Editado Gustavo A. Gonçalves quarta-feira, 12 de novembro de 2014 19:25
- Marcado como Resposta Raniel Nogueira quarta-feira, 12 de novembro de 2014 19:36
-
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
-