Challenge 3: ToList() Freezes the Result at Materialization Time — Possible Solution ==================================================================== Program.cs: var numbers = new List { 1, 3, 6, 8 }; var snapshot = numbers.Where(n => n > 5).ToList(); // executed IMMEDIATELY, right here numbers.Add(20); // added AFTER the snapshot was already materialized Console.WriteLine(string.Join(", ", snapshot)); Output: 6, 8 Explanation: Unlike Challenge 1's deferred query, .ToList() forces the Where() filter to run immediately, right where it's called, producing a real, independent List -- snapshot -- that has no ongoing connection to the original numbers list at all. Adding 20 to numbers afterward has no effect on snapshot, since snapshot is no longer a description of a query; it's already a finished, materialized result frozen at the moment ToList() ran. WHY THIS WORKS AS AN ANSWER ------------------------------ This directly contrasts with Challenge 1 by adding .ToList(), showing the exact same source-mutation-after-query-definition scenario now produces a stable result unaffected by the later change, matching the chapter's own tip-box guidance on forcing immediate evaluation.