Да. .CopyTo () выполняет поверхностное копирование, что означает, что он копирует ссылки. Для клонирования каждого объекта вам нужна глубокая копия.
Лучший способ сделать так, чтобы класс myObject реализовал IClonable
public class YourClass
{
public object Clone()
{
using (var ms = new MemoryStream())
{
var bf = new BinaryFormatter();
bf.Serialize(ms, this);
ms.Position = 0;
object obj = bf.Deserialize(ms);
ms.Close();
return obj;
}
}
}
Затем вы можете использовать .Clone () для каждого объекта и добавить его в новый список.
List<YourClass> originalItems = new List<YourClass>() { new YourClass() };
List<YourClass> newItemList = originalItems.Select(x => x.Clone() as YourClass).ToList();