As you have given more details about your database schema or about the mapping of your entities, then it is difficult to deliver something more optimized.
Then try the following query.:
var entradas =
from entrada in db.entradas
group entrada.quant by entrada.idProduto into grupo
select new { idProduto = grupo.Key, quant = grupo.Sum() };
var saidas =
from saida in db.saidas
group saida.quant by saida.idProduto into grupo
select new { idProduto = grupo.Key, quant = grupo.Sum() };
var estoque =
from produto in db.produtos
join entrada in entradas in produto.idProduto equals entrada.idProduto into leftEntradas
from entrada in leftEntradas.DefaultIfEmpty()
join saida in saidas in produto.idProduto equals saida.idProduto into leftSaidas
from saida in leftSaidas.DefaultIfEmpty()
select new estoqueAtual {
produto = produto.idProduto,
saldo = (entrada?.quant ?? 0) + (saida?.quant ?? 0)
};