我正在一个项目中,在该项目中,我有一个对象列表和一个嵌套列表,在更新原始列表之前,我想对其进行备份。
我已经接近了,但是我找不到正确的语法,所以希望您能在这里为我提供帮助。
这是原始课程:
public class TeamClass
{
public string Country { get; set; }
public string CountryCode { get; set; }
public List<double> Points { get; set; }
}
List<TeamClass> originalList = new List<TeamClass>();
在更新OriginalList上的点之前,我想创建OriginalList的深层副本,以便“撤消”更改。
当前我正在使用以下代码:
var backupList = Simulation.ConvertAll(x => new TeamClass
{
Country = x.Country,
CountryCode = x.CountryCode,
Points = new List<double>(x.Points.ConvertAll(p => new double()))
})
.OrderByDescending(o => o.Points.Sum())
.ToList();
尽管此代码创建了原始列表的深层副本,但它用0(由于新的double())将列表中的所有点替换为点
但是使用
Points = x.Points
为我提供了正确的要点,但是当原始列表更新时它们也会更新。
我认为我必须做
Points = new List<double>().AddRange(x.Points)
但是我找不到正确的语法。
感谢您的帮助。
答案 0 :(得分:0)
要从评论中回答其他问题。可以用这样的东西来完成。
int N = 4; // Number of desired elements with value
var backupList = Simulation.ConvertAll(x => new TeamClass
{
Country = x.Country,
CountryCode = x.CountryCode,
Points = new List<double>(x.Points.Take(N).Concat(x.Points.Skip(N).ToList().ConvertAll(p => new double())));
})
.OrderByDescending(o => o.Points.Sum())
.ToList();
由于double不能为空,因此N之后的所有值都将转换为0。