none
Foreach aninhados RRS feed

  • Pergunta

  • Boa tarde!

    Preciso montar um menu com 3 submenus.

    estou utilizando um model com as seguintes informações.

    public string GrupoController;
    public List<Controlador> ListaControlador { get; set; }
    public List<Acao> ListaAction { get; set; }

    três tabelas.

    tabela GrupoControlador =  idGrupoControlador - Nome

    tabela Controlador = Icontrolador - IdGrupoControlador - Nome

    tabela Action = idAction - IdControlador - Nome

    estou tetando montar um lista dentro de outra lista.

    foreach (var grupoControlador in IdGrupoControlador.Distinct())
                    {
                        var grupo = (from x in _retornoPerfil.GetAll() orderby x.Acao.Controlador.GrupoController.Nome where x.Acao.Controlador.IdGrupoControlador == grupoControlador && x.Acao.IdAmbiente == 1 select x.Acao.Controlador.GrupoController.Nome).First();
    
                        foreach (var controlador in (from x in _retornoPerfil.GetAll() where x.Acao.Controlador.IdGrupoControlador == grupoControlador && x.Acao.IdAmbiente == 1 select x.Acao.Controlador.IdControlador).Distinct())
                        {
                            var model = new ListaMenuPortal();
    
                            model.GrupoController = grupo;
    
    
                            model.DescricaoController = (from x in _retornoPerfil.GetAll() orderby x.Acao.Controlador.Descricao where x.Acao.Controlador.IdControlador == controlador && x.Acao.IdAmbiente == 1 select x.Acao.Controlador.Descricao).First();
                            model.ListaAction = (from x in _retornoPerfil.GetAll() where x.Acao.IdControlador == controlador && x.IdGrupo == IdGrupo && x.Acao.IdAmbiente == 1 select x.Acao).ToList();
    
                            model.CountAcao = model.ListaAction.Count();
    
                            retornoLista.Add(model);
                        }
                    }
    
                    return retornoLista;

    Alguém poderia me ajudar.

    Grato,





    quinta-feira, 29 de maio de 2014 21:18

Todas as Respostas

  • Tentei um outra forma, mas o grupo fica replicando.

    List<int?> IdGrupoControlador = _retornoPerfil.GetAll().Where(x => x.IdGrupo == IdGrupo && x.Acao.IdAmbiente == 1).Select(x => x.Acao.Controlador.IdGrupoControlador).ToList();
    
                    foreach (var grupoControlador in IdGrupoControlador.Distinct())
                    {
                        var grupo = (from x in _retornoPerfil.GetAll() orderby x.Acao.Controlador.GrupoController.Nome where x.Acao.Controlador.IdGrupoControlador == grupoControlador && x.Acao.IdAmbiente == 1 select x.Acao.Controlador.GrupoController.Nome).First();
                        var ControladorGrupo = new GrupoController();
    
                        
                        foreach (var controlador in (from x in _retornoPerfil.GetAll() where x.Acao.Controlador.IdGrupoControlador == grupoControlador && x.Acao.IdAmbiente == 1 select x.Acao.Controlador.IdControlador).Distinct())
                        {
                            var model = new ListaMenuPortal();
                            
                            model.DescricaoController = (from x in _retornoPerfil.GetAll() orderby x.Acao.Controlador.Descricao where x.Acao.Controlador.IdControlador == controlador && x.Acao.IdAmbiente == 1 select x.Acao.Controlador.Descricao).First();
                            model.ListaAction = (from x in _retornoPerfil.GetAll() where x.Acao.IdControlador == controlador && x.IdGrupo == IdGrupo && x.Acao.IdAmbiente == 1 select x.Acao).ToList();
    
                            model.CountAcao = model.ListaAction.Count();
    
                            retornoLista.Add(model);
                        }
                    }

    eu preciso unificar o grupo em um só.

    Grato,

    quinta-feira, 29 de maio de 2014 21:55