public void TestDoesAlteringResultChangeOriginalSequence() { var stops = new Stops(); // OrderBy does not alter the original list var sorted = stops.OrderByDescending(s => s.StopID); sorted.ElementAt(0).StopID = 88; var result = stops.Where(x => x.StopID % 2 == 0); foreach (var evenStop in result) { evenStop.StopID = 99; } foreach (var stop in stops) { Debug.WriteLine(stop); } }