public OpcionSeguridadBEList Ordenar()
        {
            //Sacamos el mínimo nivel del aplicativo.
            int minimoNivel = -1;

            for (int i = 0; i < this.Count; i++)
            {
                if (this[i].CSTRUCT.Length < minimoNivel || minimoNivel == -1)
                {
                    minimoNivel = this[i].CSTRUCT.Length;
                }
            }

            //Sacamos todos lo elementos del mínimo nivel.
            OpcionSeguridadBEList oListaResultado   = new OpcionSeguridadBEList();
            OpcionSeguridadBEList oListaPrimerNivel = new OpcionSeguridadBEList();

            for (int i = 0; i < this.Count; i++)
            {
                if (this[i].CSTRUCT.Length == minimoNivel)
                {
                    oListaPrimerNivel.Add(this[i]);
                }
            }

            //Se llama al metodo recursivo encargado de ordenar la lista.
            OrdenaRecursivo(ref oListaResultado, oListaPrimerNivel, this);
            return(oListaResultado);
        }
        private void OrdenaRecursivo(ref OpcionSeguridadBEList oListaResultado, OpcionSeguridadBEList oListaNivelAnt, OpcionSeguridadBEList oListaActual)
        {
            OpcionSeguridadBEList oListaSiguienteNivel = null;

            oListaNivelAnt.Ordenar("VDEMEN", direccionOrden.Ascending);
            for (int i = 0; i < oListaNivelAnt.Count; i++)
            {
                oListaResultado.Add(oListaNivelAnt[i]);
                oListaSiguienteNivel = new OpcionSeguridadBEList();
                for (int j = 0; j < oListaActual.Count; j++)
                {
                    if (oListaActual[j].CSTRUCT.Length == oListaNivelAnt[i].CSTRUCT.Length + 2 &&
                        oListaActual[j].CSTRUCT.IndexOf(oListaNivelAnt[i].CSTRUCT) == 0)
                    {
                        oListaSiguienteNivel.Add(oListaActual[j]);
                    }
                }

                if (oListaSiguienteNivel.Count > 0)
                {
                    OrdenaRecursivo(ref oListaResultado, oListaSiguienteNivel, oListaActual);
                }
            }
        }