【问题标题】:In C# List How can I find duplicates and add attribute value?在 C# 列表中如何查找重复项并添加属性值?
【发布时间】:2020-07-20 01:52:22
【问题描述】:

假设我有以下对象的列表

Player {id, score}

我需要找到重复的 ids,能够添加重复玩家的分数,并返回不重复的列表和加上分数。

Player1.id = 1 Player1.score = 5

Player1.id = 1 Player1.score = 6

Player2.id = 2 Player2.score = 4

预期结果:

Player1.id = 1 Player1.score = 11

Player2.id = 2 Player2.score = 4

【问题讨论】:

    标签: c#


    【解决方案1】:

    你可以使用 GroupBy,这里是一个例子:

        var result = players.GroupBy(x => x.id)
                             .Select(x => new Player
                             {
                                 id = x.Key,
                                 score = x.Sum(y => y.score)
                             })
                             .ToArray();
    

    【讨论】:

    • 太棒了!这行得通!但是,如果我添加第三个属性,例如“名称”,该怎么办。如何将其包含在“结果”中? @慈涵
    • name = x.First().name
    【解决方案2】:

    试试这个:

       var result = players
          .GroupBy(x => x.Id)
          .Select(x => new Player(x.Key, x.Sum(s => s.Score)))
          .ToList();
    

    【讨论】:

      【解决方案3】:

      试试下面的步骤

      1. 我会分组
      2. 分组值内的总和

      例如:。 PrayerList.groupby(X=>x.id).select(g=> 新祷告{id = g.key, score = g.sum(y=>y.score)}).tolist()

      【讨论】:

        猜你喜欢
        • 2021-09-26
        • 2021-12-07
        • 2021-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-21
        相关资源
        最近更新 更多