Problems with logic to bring data from a list or table

Asked

Viewed 162 times

4

I did several posts here and solved almost all problems. However I understood that the problem was in the logic that I set up to bring the result. I know I’m asking a lot, but I’m trying and I realize I’m missing something else in me to solve the question.

I have a linq that brings me everything I need. However the way it comes, I can’t assemble my canvas.

There, after several posts and guidelines here and on another site, I was told to export separate lists for each desired situation. Then I got all lost and asked for help from you.

This is my scenario:

The first linq, brings me all the information from my bank, following some criteria.

For each Reason, I bring a list of UN. Each UN a Family List and so on.

When I did the second linq to search the UN for each Reason, that’s when I realized I was wrong. Something’s missing that I can’t fit.

I was able to make sure the Motives and the UN didn’t repeat themselves. But I cannot list the UN referring to the corresponding Reason.

In the linq UN, I took the table Presentation and this table does not relate to the Reason and therefore the problem.

Down with the linq:

The first behind everything and the second attempt to bring the UN concerning each Reason. It did not work.

My Breath(all):

var monta_arvore = db.Ruptura
       .Where(m => m.IDMotivo != 7)
       .Select(rup => new MontaArvoreAcao
       {
           IDRuptura = rup.IDRuptura,
           DataRuptura = rup.DataRuptura,
           IDMotivo = rup.IDMotivo,
           Motivo = rup.Motivo.Motivo1,
           IDOrigem = rup.IDOrigem,
           CodigoPDV = rup.CodigoPDV,
           UF = rup.PDV.UF,
           Cidade = rup.PDV.Cidade,
           CnpjDescricao = rup.PDV.Cnpj + " - " + rup.PDV.Descricao,
           Codigo_Apresentacao = rup.Codigo_Apresentacao,
           Unidade_Negocio = rup.Apresentacao.Unidade_Negocio,
           Codigo_Unidade_Negocio = rup.Apresentacao.Codigo_Unidade_Negocio,
           Franquia = rup.Apresentacao.Franquia,
           Familia = rup.Apresentacao.Familia,
           Descricao = rup.Apresentacao.Descricao

       }).ToList().OrderBy(r => r.IDMotivo);

My Linq UN:

foreach (var _idmotivo in monta_arvore)
{
    _listaUnidade = db.Apresentacao
        .GroupBy(g => new { Codigo = g.Codigo_Unidade_Negocio, UN = g.Unidade_Negocio})
        .Where(un => un.Key.Codigo != "0")
        .Select(u => new MontaArvoreAcao
        {
            Unidade_Negocio = u.Select(s => s.Unidade_Negocio).FirstOrDefault(),
            Codigo_Unidade_Negocio = u.Key.Codigo
        })
        .ToList()
        .OrderBy(o => o.Unidade_Negocio);
}

See that it really doesn’t work, the way it is.

  • I think you could structure your text better because it is very confusing. Use markers, break lines.

  • A smaller text, perhaps I can not pass my doubt, give as much subsidy as possible to the solution.

  • I think I should walk the tree and relate the UN, right? I’ll go this way and see what happens.

  • 1

    Want an infallible tip? query in SQL... test... then "translate" into Linqpad. Use the Linqpad program that will help you too.

1 answer

1

I swear I didn’t quite understand your question, but I will answer to try to help you... (I’m not so familiar with Linq)

List<UN> ListaUN;//carrega a lista de UN do banco.

foreach (var _idmotivo in monta_arvore)
{
    var listaUnidade = ListaUN.Where(x => x.IDMotivo == _idmotivo.IDMotivo);
    //seria isso?
}

If it’s an internal list of him (which I believe is your case), you can do so too:

Apresentacao.Where(x => x.ListaUN.All(s => s.IDMotivo == _udmotivo.IDMotivo)));

Please leave a comment!

  • resolvi aqui. http://answall.com/questions/33694/linq-tr%C3%A1s-result-mas-n%C3%A3o-obeying-to-Join

Browser other questions tagged

You are not signed in. Login or sign up in order to post.