public int Search(Orbit orbit) { var orbitsSearched = 0; Orbit nextOrbit = this; do { var lastOrbit = nextOrbit; nextOrbit = nextOrbit.Next.FirstOrDefault(x => x.IsLinked(orbit)) ?? nextOrbit.Previous; if (!lastOrbit.Equals(this) && !nextOrbit.Equals(orbit)) { orbitsSearched++; } }while (!nextOrbit.Equals(orbit)); return(orbitsSearched); }
public bool IsLinked(Orbit orbit) { return(orbit.Equals(this) || _next.Any(x => x.IsLinked(orbit))); }