Ответ 1
Вы смотрите на отсроченное исполнение. Когда вы создаете запрос LINQ, он в основном представляет собой проект, в котором говорится: "при запросе выполните эти шаги для управления источником данных". Трудная часть здесь заключается в том, что этот запрос выполняется только отдельным набором операций LINQ (.ToList()
является одним из них).
Поэтому, когда вы вызываете e.ToList()
, как только он будет рандомизировать источник данных, так как это говорит о том, что он должен сделать. Когда вы снова вызываете .ToList()
на этом же чертеже, он снова начинается с начала и рандомизируется снова.
План не содержит никакого состояния, он просто говорит, что нужно делать на каждом этапе пути.