This contains how linq query reevalute the collection value.
int[] array = new int[] {1,2,3};
IEnumerable<int> result = array.Select(o => o * 2);
foreach(int i in array)
Console.WriteLine(i);
Array.Clear(array, 0, 3);
foreach (int i in array)
Console.WriteLine(i);