Поскольку ваша переменная query
фактически представляет запрос , а не фактический набор данных. Каждый раз, когда вы перечисляете более query
, оно будет снова выполнять действие; ваше объявление (присваивание переменной query
) определяет запрос. Перечисление это выполняет это. Похоже, что вы хотите сделать, это создать представление запроса в памяти в виде списка. Вы можете сделать что-то вроде этого:
Dim list = (From X In list Select New With {.Points = 0, X.ID}).ToList()
For Each o In list
o.Points = 1
Next
Это должно дать вам ожидаемое поведение.