Похоже, что вы создаете замыкание для переменной x
в лямбда-выражении, но немного странно, что у вас возникают проблемы с ним, потому что вы сразу выполняете лямбда-выражение - отсрочки нетэффект выполнения здесь, который обычно был бы источником проблем с закрытием.
Тем не менее, есть один способ проверить, является ли закрытие причиной проблемы - попробуйте взять копию переменной x внутри цикла и посмотреть, решит ли это проблему, например:
foreach (var product in productQuery)
{
int y = x;
product.RSTATE = product.Versions.Single(o => o.VersionNumber == y).RSTATE;
x++;
}
Кроме того, я подозреваю, что вы могли бы избежать всего цикла (и, следовательно, проблемы) с проекцией .Select()
, но поскольку объект вашего продукта был изменен, это будет немного сложнее.