我正在将值添加到我的列表中,并且它使用新分配的值覆盖了先前的值。我想这与引用类型和值类型有关。
class EODSales
{
public string Sales { get; set; }
public int TC { get; set; }
public decimal Amount { get; set; }
}
class EODBO
{
public string Sales { get; set; }
public List<EODSales> Values { get; set; }
}
.
.
.
.
List<EODSales> EODSalesList = new List<EODSales>();
List<EODBO> eodboList = new List<EODBO>();
.
.
.
//Inside a method -
EODSales sales = new EODSales();
sales.Sales = "Prev";
sales.TC = 5;
sales.Amount = 500;
EODSalesList.Add(sales);
EODBO obj = new EODBO();
obj.Sales = "Baking Order";
obj.Values = EODSalesList;
eodboList.Add(obj);
//Inside another method
EODSales sales = new EODSales();
sales.Sales = "Prev";
sales.TC = 10;
sales.Amount = 1000;
EODSalesList.Add(sales);
EODBO obj = new EODBO();
obj.Sales = "Refund";
obj.Values = EODSalesList;
eodboList.Add(obj);
我希望我的eodboList像这样:列表中的第一项具有Sales =“ Baking Order”,值具有“ Prev”,5和500。而列表中的第二项具有Sales =“退款”和值分别为“上一个”,10和100。 我当前的代码只是将EODBO.Values分配给列表中的所有其他项目,这意味着我的第一项“烘烤订单”的值为“ Prev”,10和100。
更新 我将EODBO中的值更改为 公开EODSales价值观{组; } 这是我的代码 https://dotnetfiddle.net/dHNr9o
答案 0 :(得分:1)
You have to change your code as like
below:
// First Method
EODSales sales = new EODSales();
sales.Sales = "Prev";
sales.TC = 5;
sales.Amount = 500;
EODSalesList.Add(sales);
EODBO obj = new EODBO();
obj.Sales = "Baking Order";
obj.Values.Add(sales);
eodboList.Add(obj);
Same way, You have change into second method:
replace obj.Values=sales to obj.Values.Add(sales)
答案 1 :(得分:0)
您正在对 eodboList 中的所有项目使用 EODSalesList ,快速修复:
ts