Ну, грубо говоря, цикл foreach
получает объект перечислителя и выполняет итерацию коллекции, используя метод MoveNext
.
Так что думайте об этом, как будто у вас есть такой код:
var enumerator = formAssigned.Sections.Where(x => !x.Deleted).GetEnumerator();
// some code with enumerator (this is what you have in body of foreach loop)
А
var query = formAssigned.Sections.Where(x => !x.Deleted); // returns IEnumerable<T>
var enumerator = query.GetEnumerator();
// some code with enumerator