private List<Relaciones> OrdenarRelaciones(List<Relaciones> listaDesaordenada)
        {
            List<Relaciones> listaOrdenada = new List<Relaciones>();
            if (listaDesaordenada.Count == 0)
                return listaOrdenada;

            Relaciones relacionActual = listaDesaordenada.First();
            Estaciones estacionOrigen = new Estaciones();

            //Primero busco cual es la estacion de inicio
            while (relacionActual != null)
            {
                estacionOrigen = relacionActual.Estaciones;
                relacionActual = listaDesaordenada.Where(x => x.Id_Estacion_Siguiente == relacionActual.Id_Estacion_Anterior).FirstOrDefault();
            }

            //Busco la primer relacion. Sera aquella que tenga como estacion anterior a la estacion origen
            relacionActual = listaDesaordenada.Where(x => x.Id_Estacion_Anterior == estacionOrigen.Id).FirstOrDefault();

            while(relacionActual!=null)
            {
                listaOrdenada.Add(relacionActual);
                relacionActual = listaDesaordenada.Where(x => x.Id_Estacion_Anterior == relacionActual.Id_Estacion_Siguiente).FirstOrDefault();
            }

            return listaOrdenada;
        }
 public bool relaciona(Estaciones nodoInicial, Estaciones nodoFinal)
 {
     //TODO Revisar si la relacion es bidireccional.
     if ((Id_Estacion_Anterior == nodoInicial.Id && Id_Estacion_Siguiente == nodoFinal.Id) || (Id_Estacion_Anterior == nodoFinal.Id && Id_Estacion_Siguiente == nodoInicial.Id))
     {
         return true;
     }
     return false;
 }
        /*public void LimpiarListaLINQParaPoderGuardar()
        {
            _relaciones = new EntitySet<Relacion>();
            _listaFormaciones_LINQ = new EntitySet<Servicio_X_Formacion>();
        }*/
        /*A partir de la lista de relaciones definidas para el servicio se configuran las distitnas estaciones*/
        /*public void ConfigurarEstaciones()
        {
            Relaciones r;
            Estaciones nodoRelacion;

            //Se cargan todas las relaciones siguientes de los nodos. Se recorre de atras para adelante
            Estaciones nodoActual = this.Desde;
            while (nodoActual != null)
            {
                nodoRelacion = nodoActual;
                while (nodoRelacion != this.Hasta)
                {
                    r = BuscarRelacionSiguiente(nodoRelacion);
                    nodoActual.agregarRelacionSiguiente(r);
                    nodoRelacion = r.Estaciones1;
                }

                if (nodoActual != this.Hasta)
                {
                    r = BuscarRelacionSiguiente(nodoActual);
                    nodoActual = r.Estaciones1;
                }
                else
                    nodoActual = null;
            }

            nodoActual = this.Hasta;
            while (nodoActual != null)
            {
                nodoRelacion = nodoActual;
                while (nodoRelacion != this.Desde)
                {
                    r = BuscarRelacionAnterior(nodoRelacion);
                    nodoActual.agregarRelacionAnterior(r);
                    nodoRelacion = r.Estaciones;
                }

                if (nodoActual != this.Desde)
                {
                    r = BuscarRelacionAnterior(nodoActual);
                    nodoActual = r.Estaciones;
                }
                else
                    nodoActual = null;
            }
        }*/
        /*Dada una estacion retorna aquella relacion donde dicha estacion es la estacion anterior*/
        public Relaciones BuscarRelacionSiguiente(Estaciones n)
        {
            return Relaciones.Where(x => x.Id_Estacion_Anterior == n.Id).FirstOrDefault();
        }
 public Relaciones relacionEntre(Estaciones nodoInicial, Estaciones nodoFinal)
 {
     foreach (Relaciones relacion in Relaciones)
     {
         if (relacion.relaciona(nodoInicial, nodoFinal))
         {
             return relacion;
         }
     }
     throw new ApplicationException("No se encontró relacion entre nodos.");
 }
 public void agregarParada(Estaciones nodo, bool para)
 {
     Parada parada = new Parada();
     parada.nodo = nodo;
     parada.para = para;
     _paradas.Add(parada);
 }