Array
(
)

Problemas com lógica para trazer dados de uma lista ou tabela

Pjava
   - 22 set 2014

Fiz vários posts aqui e resolvi quase todos os problemas. Porem entendi que o problema estava na lógica que eu montei para trazer o resultado. Sei que eu estou perguntando bastante, mas estou tentando e percebo que falta algo mais em mim para resolver a questão. Tenho uma linq que me trás tudo que eu preciso. Porem da forma que vem, não consigo montar minha tela. Aí, após vários posts e orientações aqui e em outro site, disseram-me que eu exportasse listas separadas para cada situação pretendida. Aí que eu me perdi todo e peço ajuda a vocês. Meu cenário é esse. A primeira linq, me trás todas as informações do meu banco, seguindo alguns critérios. Para cada Motivo, eu trago uma lista de UN. Cada UN uma lista de Família e assim vai. Quando eu fiz a segunda linq para buscar a UN referente a cada Motivo, foi aí que percebi que estava errado. Falta algo que não consigo encaixar. Consegui fazer com que os Motivos e as UN não se repetisse. Mas não consigo listar as UN referentes ao Motivo correspondente. Na linq UN, eu peguei da tabela Apresentação e essa tabela não se relaciona com a Motivo e por isso o pau. Abaixo as linq. A primeira trás tudo e a segunda tentativa de trazer as UN relativas a cada Motivo. Não deu certo.
Minha linq(tudo):
#Código

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);

Minha linq UN:
#Código
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);
                }

Veja que realmente não dá certo, da forma que está.

Pjava
   - 23 set 2014

Fazendo da forma acima postada, só aparece uma única UN para cada Motivo e deveria aparecer todas as UN relacionadas com cada Motivo. Onde eu errei, podem me ajudar?

Pjava
   - 23 set 2014

Corrigindo o post acima. Só trás uma, quando eu digo que o código da Apresentação é igual ao código da lista que está sendo percorrida.