更新列表中的子项会更新C#中的所有项

时间:2019-02-11 05:56:31

标签: c# model-view-controller

这是我的清单:

public class PayRateDaysModel
{
    public string day_name { get; set; }
    public List<RateList> multiplier { get; set; }
}
public class RateList
{
    public double start_after { get; set; }
    public double rate_multiplier { get; set; }
}

当我尝试更新PayRateDaysModel的乘数中的任何值时,然后更新PayRateDaysModel的所有乘数。我想只更新当前项目。下面是我的代码:

var dayExists = daysModel.Where(x => x.day_name == day_name).FirstOrDefault();
if(dayExists==null)
{
    PayRateDaysModel days = new PayRateDaysModel();
    days.day_name = day_name;
    days.multiplier = rate_list;
    daysModel.Add(days);
}
else
{
    //update
    dayExists.day_name = "abc";
    dayExists.multiplier.FirstOrDefault().rate_multiplier = 1;
}

1 个答案:

答案 0 :(得分:2)

根据您向我们显示的内容,我认为您正在rate_list = new RateList(…)之类的上方创建rate_list,并将其设置为days.multiplier = rate_list;中所有时间。由于您没有为每个元素重新创建该rate_list,因此只要您在dayExists中的某一天对其进行更改,您也将为所有其他元素都对其进行更改。 因此,您应该执行以下操作days.multiplier = new RateList(…);