【发布时间】:2015-06-20 13:23:35
【问题描述】:
我有两个对象说 Amount,NewAmount 都有以下属性
public class Amount
{
public Int64 Id { get; set; }
public Int64 Amt1 { get; set; }
public Int64 Amt2 { get; set; }
}
public class NewAmountDo
{
public Int64 newAmt { get; set; }
}
我有一个包含一些值的 Amount 列表和一个包含一个值的 NewAmount 对象
List<Amount> amountListObject = new List<Amount>();
Amount amount = new Amount();
Amount amount1 = new Amount();
Amount amount2 = new Amount();
Amount amount3 = new Amount();
NewAmountDo newAmountDo = new NewAmountDo();
newAmountDo.newAmt = 50;
amount.Id = 1;
amount.Amt1 = 10;
amount.Amt2 = 100;
amountListObject.Add(amount);
amount1.Id = 2;
amount1.Amt1 = 20;
amount1.Amt2 = 200;
amountListObject.Add(amount1);
amount2.Id = 0;
amount2.Amt1 = 30;
amount2.Amt2 = 300;
amountListObject.Add(amount2);
amount3.Id = 0;
amount3.Amt1 = 40;
amount3.Amt2 = 400;
amountListObject.Add(amount3);
Console.WriteLine("Input ");
exising = amountListObject;
List<Amount> intermediate = new List<Amount>();
Amount newamount = new Amount();
intermediate.AddRange(amountListObject);
intermediate.Add(newamount);
我正在尝试将 NewAmount 对象的属性 newAmt 中的值添加到 amountListObject 的 Amt1 属性,并将 Amt1 的值下推到下一个列表项的 Amt1 值。但是我得到了列表中所有 Amt1 中第一个 Amt1 的值。下面是我试过的代码
for (int i = 0; i < intermediate.Count; i++)
{
if (i == 0)
{
intermediate[i].Amt1 = newAmountDo.newAmt;
}
else
{
intermediate[i].Amt1 = exising[i - 1].Amt1;
}
}
下面是输入:
Id : 1 , Amt1 : 10 , Amt2 : 100
Id : 2, Amt1 : 20 , Amt2 : 200
Id : 0 , Amt1 : 30 , Amt2 : 300
Id : 0 , Amt1 : 40 , Amt2 : 400
下面是我得到的结果
Id : 1 , Amt1 : 50 , Amt2 : 100
Id : 2 , Amt1 : 50 , Amt2 : 200
Id : 0 , Amt1 : 50 , Amt2 : 300
Id : 0 , Amt1 : 50 , Amt2 : 400
Id : 0 , Amt1 : 50 , Amt2 : 0
预期结果:
Id : 1 , Amt1 : 50 , Amt2 : 100
Id : 2 , Amt1 : 10 , Amt2 : 200
Id : 0 , Amt1 : 20 , Amt2 : 300
Id : 0 , Amt1 : 30 , Amt2 : 400
Id : 0 , Amt1 : 40, Amt2 : 0
有什么办法可以做到吗?
【问题讨论】: