私はかなり奇妙な問題に直面しています。私は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の選択は本当にエレガントです。 –