.NET 4.x Слить совпадающие элементы в разных коллекциях - C#
Формулировка задачи:
public class SalesOrder
{
public string Name { get; set; }
public double Price { get; set; }
public int Quantity { get; set; }
public SalesOrder(string Name, double Price, int Quantity)
{
this.Name = Name;
this.Price = Price;
this.Quantity = Quantity;
}
}
//...
List<SalesOrder> Orders1 = new List<SalesOrder>()
{
new SalesOrder("Ballon", 2.54, 1),
};
//..
List<SalesOrder> Orders2 = new List<SalesOrder>()
{
new SalesOrder("Ballon", 2.54, 21),
new SalesOrder("Ball", 4.32, 2)
};
"Ballon", 2.54, 22
"Ball", 4.32, 2
Решение задачи: «.NET 4.x Слить совпадающие элементы в разных коллекциях»
textual
Листинг программы
List<SalesOrder> Orders3 = Orders1.Union(Orders2)
.GroupBy(order => new { order.Name, order.Price })
.Select(group => {
SalesOrder order = group.First();
order.Quantity += group.Skip(1).Sum(o => o.Quantity);
return order;
}).ToList();