Сохранение исходного списка без изменений - PullRequest
0 голосов
/ 25 апреля 2018

В моем следующем коде myOriginalList все еще изменяется. Как мне сохранить его без изменений?

Спасибо за вашу помощь.

List<Product> myOriginalList = GetList(); 
List<Product> customList= new List<Product>();

                        foreach (var productType in myProductTypeList )
                        {
                            var tempList = myOriginalList.ToList(); 
                            var result = GetModifiedCustomList(tempList, productType );
                            customList.AddRange(result);                                                                                    
                        }
.....
.....
 private List<Product> GetModifiedCustomList(List<Product> inplist, string productType)
        {
            List<Product> tmpList = new List<Product>(inplist); 

            if (tmpList?.Count > 0)
            {
                tmpList.ForEach(r => { if (r.ProductType == "NONE") { r.ProductType= productType; } }); 
            }
            return tmpList; 
        }  

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

попробуйте var tempList = new List<Product>(myOriginalList.ToArray());, так как это создаст новую копию

0 голосов
/ 25 апреля 2018

Вам нужно будет создать глубокую копию списка. Одним из возможных способов является клонирование каждого объекта 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()));
...