The idiomatic way to approach this in C# is to implement ICloneable
on your Data
, and write a Clone
method that does the deep copy (and then presumably a Enumerable.CloneRange
method that can clone part of your list at once.) There isn’t any built-in trick or framework method to make it easier than that.
Unless memory and performance are a real concern, I suggest that you try hard to redesign it to operate on immutable Data
objects, though, instead. It’ll wind up much simpler.