gpt4 book ai didi

c# - 基于键 c# 合并两个列表

转载 作者:太空狗 更新时间:2023-10-29 21:41:11 25 4
gpt4 key购买 nike

我有类别奖励,我会在每场比赛中保留用户资金。我有两个列表需要以某种方式连接。我在下面写下示例列表和期望的结果。

public class Reward
{
public int Game { get; set; }
public int User { get; set; }
public int Money { get; set; }

public Reward Merge(Reward p)
{
return new Reward { Game = this.Game, User = this.User, Money = this.Money + p.Money};
}
}

IList<Reward> list1 = new List<Reward>();
list1.Add(new Reward {Game = 1, User = 1, Money = 10});
list1.Add(new Reward { Game = 1, User = 2, Money = 20 });
list1.Add(new Reward { Game = 1, User = 3, Money = 30 });


IList<Reward> list2 = new List<Reward>();
list2.Add(new Reward { Game = 2, User = 1, Money = 15 });
list2.Add(new Reward { Game = 2, User = 2, Money = 25 });
list2.Add(new Reward { Game = 2, User = 4, Money = 35 });

结果列表应该是

User Money
1 25
2 45
3 30
4 35

我试试

IList<Reward> listConcat = list1.Concat(list2)
.GroupBy(u=> u.User)
.Select(???)
.ToList();

但是如何呢?

最佳答案

您在使用 GroupBy 时走在了正确的轨道上,这应该可以完成工作:

IEnumerable<Reward> result =
from r in list1.Concat(list2)
group r by r.User into groupedRewards
select new Reward
{
Game = 0, //what game to use?
User = groupedRewards.Key,
Money = groupedRewards.Sum(r => r.Money)
};

编辑:与 lambda 表达式相同:

IEnumerable<Reward> result = list1.Concat(list2)
.GroupBy(u => u.User)
.Select(g => new Reward
{
Game = 0, //what game to use?
User = g.Key,
Money = g.Sum(r => r.Money)
});

关于c# - 基于键 c# 合并两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7988140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com