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