То, что вы делаете неправильно: select возвращает вашу коллекцию, но не действует, пока объекты не будут повторены.Находясь в вызове foreach, селекторы находятся за пределами пути выполнения.(Для получения дополнительной информации просмотрите комментарии).
.select () в вызове не делает ничего особенного, кроме определения того, как будет выглядеть возвращаемый список..select (). ToList () выполняет итерацию по коллекции, применяя проекцию.
Если вы установите переменную, равную вызову .select, но никогда не получите доступ к данным внутри нее, тогда значения по существу будутвсе еще быть тем, с чего они начали.Как только вы перебираете или выбираете определенный элемент, он затем применяет проекции.
Изменение выбора на foreachs для комментариев Василия даст вам желаемые результаты.
Могу ли я, возможно,предложить, чтобы вы смотрели, чтобы установить значение равным 0 дальше вверх по вашему стеку (или вниз)?- Не зная вашего варианта использования, может быть, есть ли лучшее место, чтобы вернуть его по умолчанию к 0, чем там, где вы выбрали?(автомат, инициализатор и т. д.)