C# объединение и сумма одинаковых элементов в List

283
24 января 2019, 12:20

подскажите, пожалуйста, как я могу получить сумму одинаковых элементов в двух списках? И добавить в конечный список уникальные элементы?

Пример :

 class Salary
    {
        public string nickname; // имя
        public double amount;   // сумма
    }
           List<Salary> workers1 = new List<Salary>();
            workers1.Add(new Salary() { nickname = "Vladimir", amount = 455.75 });
            workers1.Add(new Salary() { nickname = "Elena", amount = 214.20 });
            workers1.Add(new Salary() { nickname = "Oleg", amount = 199.85 });
           List<Salary> workers2 = new List<Salary>();
            workers2.Add(new Salary() { nickname = "Elena", amount = 18.45 });
            workers2.Add(new Salary() { nickname = "Vladimir", amount = 579.04 });
            workers2.Add(new Salary() { nickname = "Oleg", amount = 322.95 });
            workers2.Add(new Salary() { nickname = "Anton", amount = 55 });

Объединить пробовал :

 workers1 = workers1.Union(workers2).ToList();

Как сюда можно добавить операцию суммирования? Спасибо

Answer 1

Используйте группировку для получения суммы по имени.

var result = workers1.Concat(workers2).GroupBy(x => x.nickname)
        .Select(x => new Salary() {nickname = x.Key, amount = x.Sum(z=>z.amount)})
        .ToList();
foreach (var w in result.OrderBy(x => x.nickname))
    Console.WriteLine($"{w.nickname} - {w.amount}");

Вывод

Anton - 55
Elena - 232,65
Oleg - 522,8
Vladimir - 1034,79
READ ALSO
Entity Framework 5. Illegal mix of collations for operation &#39;UNION&#39;

Entity Framework 5. Illegal mix of collations for operation 'UNION'

Создал в MySQL тестовую базуОдна таблица:

162
Проблема с Camera.main.ScreenToWorldPoint(touch.position) в Unty

Проблема с Camera.main.ScreenToWorldPoint(touch.position) в Unty

Как сделать в моей 2д игре, так, чтобы игра не отслеживала моё палец (тач), когда я нажимаю на кнопки ходьбыВ моей игре, оружие персонажа следит...

159
Не работает шаблон TreeViewItem

Не работает шаблон TreeViewItem

Я пытаюсь кастомизировать элемент TreeView с помощью шаблоновВ дереве будет 2 уровня узлов (родитель и дочерний)

189