If your elements are value types, then you can just do:
List
However, if they are reference types and you want a deep copy (assuming your elements properly implement ICloneable), you could do something like this:
List
List
oldList.ForEach((item) =>
{
newList.Add((ICloneable)item.Clone());
});
Obviously, replace ICloneable in the above generics and cast with whatever your element type is that implements ICloneable.
If your element type doesn’t support ICloneable but does have a copy-constructor, you could do this instead:
List
List
oldList.ForEach((item)=>
{
newList.Add(new YourType(item));
});
Personally, I would avoid ICloneable because of the need to guarantee a deep copy of all members. Instead, I’d suggest the copy-constructor or a factory method like YourType.CopyFrom(YourType itemToCopy) that returns a new instance of YourType.
Any of these options could be wrapped by a method (extension or otherwise).
You can use an extension method.
static class Extensions
{
public static IList
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
}