.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)
};
имеется 2 коллекции, как их слить в одну по совпадающим элементам? Т.е. на примере выше хочется получить коллекцию вида:
"Ballon", 2.54, 22 "Ball", 4.32, 2
Пример сильно упрощён, в реальности свойств много больше и сливать дублирующихся нужно штук 5.

Решение задачи: «.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();

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы