У меня возникает довольно странная проблема. Я повторяю тип List и в моем цикле присваиваю переменную итератора другому локальному объекту. Теперь изменение чего-либо в этом локальном объекте вызывает изменения в списке, в котором цикл выполняется итерацией. Позвольте мне прояснить это с помощью образца кода.Вычисления внутри цикла Foreach, производящие значения итерирующего списка
var balances = DBHelperADO.Select("select * from Orders");
// balances is of type List<MyModel>
foreach (var item in balances)
{
MyModel model = new MyModel();
model = item;
var thisQty = details.Where(x => x.Code == item.Code).Sum(x => x.QTY);
// details is another List<MyModel> holding values from the GUI
model.BLNC = model.BLNC - thisQty;
model.VAL = (model.BLNC == 0) ? 0 : model.VAL - (thisQty * model.RATE);
model.TABLE = "Orders";
toUpdate.Add(model); // toUpdate is a List<MyModel>
}
Теперь я понимаю, что переменная-итератор (в данном случае пункт) только для чтения, и когда я пишу:
модель = пункт;
Я делаю копию моего пункта значения. Но когда я делаю вычисления на объекте модели, он вызывает те же изменения в списке весов.
Я не понимаю, почему это влияет на список весов. Я выполняю расчеты по локальным областям модель объект. Тогда почему они отражают список итераций (балансов).
Пожалуйста, помогите мне, что я делаю неправильно.
С уважением
СПАСИБО много. Выбор LINQ очень изящный. –