private void Switch(p.Path start, p.Path end) { if (Equals( Items.FirstOrDefault(t => Equals(t.Pair.Item1, start))?.Color, Items.FirstOrDefault(t => Equals(t.Pair.Item1, end))?.Color)) { RouteController(start, end); } else { // start foreach (var t in Items.Where(t => Equals(t.Pair.Item1, start))) { switch (t.Color) { case LineColor.Red: RouteController(start, Equals(end.Select(), LineColor.Blue) ? RedL_kreshatik : RedL_teatralna); break; case LineColor.Green: RouteController(start, Equals(end.Select(), LineColor.Blue) && Equals(start.Select(), LineColor.Green) ? GreenL_palatssportu : GreenL_zolotivorota); break; case LineColor.Blue: RouteController(start, Equals(end.Select(), LineColor.Red) ? BlueL_maidan : BlueL_lt); break; } } // end foreach (var t in Items.Where(t => Equals(t.Pair.Item1, end))) { switch (t.Color) { case LineColor.Red: RouteController( Equals(end.Select(), LineColor.Red) && Equals(start.Select(), LineColor.Green) ? RedL_teatralna : RedL_kreshatik, end); break; case LineColor.Green: RouteController( Equals(end.Select(), LineColor.Green) && Equals(start.Select(), LineColor.Blue) ? GreenL_palatssportu : GreenL_zolotivorota, end); break; case LineColor.Blue: RouteController( Equals(end.Select(), LineColor.Blue) && Equals(start.Select(), LineColor.Green) ? BlueL_lt : BlueL_maidan, end); break; } } } }