Краткий ответ на этот вопрос:
customer.Product = // Why I need to do here?
Просто вам нужно добавить свои продукты в виде Product[]
(потому что так оно определено)в классе Customer
), что мы можем сделать, приведя элементы из списка к Product
(таким образом, мы получаем строго типизированные объекты вместо просто Object
объектов) и используем метод расширения System.Linq
, ToArray()
чтобы создать массив из списка:
customer.Product = productList.Select(p => (Product)p).ToArray();
// Note that we should clear our list for the next iteration
productsList.Clear();
Еще несколько вещей, которые следует учитывать:
Классы не должны именоваться во множественном числе, если они не 'Если у вас есть коллекции, ваш класс Products
должен называться Product
.
Вы должны избегать использования списков object
, если у вас есть строго типизированные классы, поэтому List<Object> customerList
должно быть List<Customer> customers
.
Вы заполняете списки одних и тех же данных снова и снова. Я предполагаю, что это потому, что это всего лишь пример, но хотел сообщить вам на всякий случай.
Ваш существующий код может быть изменен на что-то вроде:
List<Customer> customers = new List<Customer>();
for (int i = 0; i < 10; i++)
{
// Create a new customer
Customer customer = new Customer
{
Name = "Pedro",
Age = "20",
};
// Create an array of products since Customer expects this type
Product[] products = new Product[3];
for (int j = 0; j < products.Length; j++)
{
products[j] = new Product
{
Code = "1",
Price = "400.00"
};
}
// Add the array to our customer
customer.Products = products;
// Add our customer to the list
customers.Add(customer);
}
Или мы могли бы использовать чистый Linq и выбрать наши данные, используя Enumerable.Range
в качестве конструкции "loop":
List<Customer> customers = Enumerable.Range(0, 10).Select(c =>
new Customer
{
Name = "Pedro",
Age = "20",
Products = Enumerable.Range(0, 3).Select(p => new Product
{
Code = "1",
Price = "400.00"
}).ToArray()
}).ToList();