.NET 4.x Слить совпадающие элементы в разных коллекциях - C#

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. public class SalesOrder
  2. {
  3. public string Name { get; set; }
  4. public double Price { get; set; }
  5. public int Quantity { get; set; }
  6. public SalesOrder(string Name, double Price, int Quantity)
  7. {
  8. this.Name = Name;
  9. this.Price = Price;
  10. this.Quantity = Quantity;
  11. }
  12. }
  13. //...
  14. List<SalesOrder> Orders1 = new List<SalesOrder>()
  15. {
  16. new SalesOrder("Ballon", 2.54, 1),
  17. };
  18.  
  19. //..
  20. List<SalesOrder> Orders2 = new List<SalesOrder>()
  21. {
  22. new SalesOrder("Ballon", 2.54, 21),
  23. new SalesOrder("Ball", 4.32, 2)
  24. };
имеется 2 коллекции, как их слить в одну по совпадающим элементам? Т.е. на примере выше хочется получить коллекцию вида:
"Ballon", 2.54, 22 "Ball", 4.32, 2
Пример сильно упрощён, в реальности свойств много больше и сливать дублирующихся нужно штук 5.

Решение задачи: «.NET 4.x Слить совпадающие элементы в разных коллекциях»

textual
Листинг программы
  1. List<SalesOrder> Orders3 = Orders1.Union(Orders2)
  2.     .GroupBy(order => new { order.Name, order.Price })
  3.     .Select(group => {
  4.         SalesOrder order = group.First();
  5.         order.Quantity += group.Skip(1).Sum(o => o.Quantity);
  6.         return order;
  7.     }).ToList();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы