Make calculation using LINQ

2

I'm developing a program in C #. In it I have three tables:

produto
{
    string idProduto;
    string descricao;
}

entrada
{
    string idProduto;
    int quant;
}

saida
{
    string idProduto;
    int quant;
}

I want to create a class like this:

estoqueAtual
{
    string produto;
    int saldo; //onde saldo seria entrada.quant - saida.quant
}

How can I calculate the balance?

    
asked by anonymous 29.04.2017 / 16:51

1 answer

4

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)
    };
    
02.05.2017 / 19:52