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

C# 更新列表中的子项将更新C中的所有项#,c#,model-view-controller,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;

以下是我的清单:

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; }
}

根据您向我们展示的内容,我认为您正在创建上面某个位置的费率列表,如
rate\u list=new rate list(…)
,您正在将其设置为
天中的所有天。乘数=费率列表。由于您没有为每个元素重新创建该rate_列表,因此任何时候您在一天中更改它时,您也会更改所有其他元素的rate_列表。

所以你应该这样做
days.multiplier=newratelist(…)

尝试
dayExists.multiplier[0]。rate\u multiplier=1欢迎来到StackoverFlow。请注意,它仍在更新PayrateDaysModel中所有项目的rate_乘数值。我只想更新dayExists的值,但它会更新整个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;
}