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