public IList <Saldo> GetSaldos(int IdCategoria, int IdProduto, int IdFilial, string Sort) { var query = Filiais .SelectMany(p => Produtos, (f, p) => new Saldo { Filial = f, Produto = p, Qtde = f.Movimentos.Where(m => m.IdProduto == p.Id).Any() ? f.Movimentos.Where(m => m.IdProduto == p.Id).Sum(m => m.Quantidade) : 0.0 }); if (IdCategoria != 0) { query = query.Where(p => p.Produto.Categoria.Id == IdCategoria); } if (IdProduto != 0) { query = query.Where(p => p.Produto.Id == IdProduto); } if (IdFilial != 0) { query = query.Where(f => f.Filial.Id == IdFilial); } if (string.IsNullOrEmpty(Sort)) { query = query.OrderBy(f => f.Filial.Nome).ThenBy(p => p.Produto.Descricao); } else { query = query.OrderBy(Sort); } return(query.ToList()); }
public IList <Saldo> GetSaldos() { IList <Saldo> saldos = Filiais .SelectMany(p => Produtos, (f, p) => new Saldo { Filial = f, Produto = p, Qtde = f.Movimentos.Where(m => m.IdProduto == p.Id).Any() ? f.Movimentos.Where(m => m.IdProduto == p.Id).Sum(m => m.Quantidade) : 0.0 }) .OrderBy(f => f.Filial.Nome) .OrderBy(p => p.Produto.Codigo).ToList(); return(saldos); }