Вам нужно будет создать глубокую копию списка.
Одним из возможных способов является клонирование каждого объекта Product.
Добавьте статический метод Clone в класс Product, который выполняет аналогичную функцию.
public static Product Clone(Product product)
{
return new Product
{
Underlying = product.Underlying
};
}
Теперь выполните итерацию по списку, клонируйте и добавьте каждый элемент в новый список.
var newList = new List<Product>();
oldList.ForEach(x => newList.Add(x.Clone()));