다소 이상한 문제가 발생합니다. List 유형을 반복하고 루프 내에서 반복자 변수를 다른 로컬 객체에 할당합니다. 이제 해당 로컬 객체의 내용을 변경하면 어떤 루프가 반복되는지 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 선택은 정말 우아합니다. –