Как скопировать и заменить в список

#c# #linq #generics #.net-core

#c# #linq #общие #.net-ядро

Вопрос:

Как мне скопировать, обновить и заменить существующий список (это приведет к удалению всех элементов и замене новым классом)? Оба списка уже объявлены.

 public class ProductType1
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public string ProductDescription { get; set; }
}

public class ProductType2
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public string ProductDescription { get; set; }
    public string ProductBarCodeNumber{ get; set; }
}

List<ProductType1> producttype1 = new List<ProductType1>()
List<ProductType2> producttype2 = new List<ProductType2>()
  

Цель: удалить все ProductType1 и скопировать все ProductType2 в ProductType1, исключая ProductBarCodeNumber.

тест магазина электроники проекта

Ответ №1:

Вот пример использования проекции Linq

 producttype1 = producttype2.Select(x => new ProductType1() 
                                            { ProductId = x.ProductId,
                                              ProductName = x.ProductName,
                                              ProductDescription = x.ProductDescription})
                           .ToList();
  

Комментарии:

1. спасибо, и я предполагаю, что это сработает, если producttype1 уже имеет значения, он удалит и примет значения из producttype2 с проекцией, ценю это

2. @JoeMiller да по всем пунктам

3. @JoeMiller, нет, проекция создаст новый экземпляр List<ProductType1> . новыми экземплярами productType1 . Исходный экземпляр будет собран как мусор. Вы можете просто проверить, сохранив исходный список во временной переменной перед проектированием.