gpt4 book ai didi

c# - 基于两列聚合两个相同的列表并对第三列求和

转载 作者:行者123 更新时间:2023-12-05 00:13:28 25 4
gpt4 key购买 nike

我有两个类类型 TestClass 的列表。我只需要聚合两个列表。

 public class TestClass
{
private string _fan;
private string _prefix;
private decimal _amount;

#region Properties

public string Fan
{
get { return _fan; }
set { _fan = value; }
}

public string Prefix
{
get { return _prefix; }
set { _prefix = value; }
}

public decimal Amount
{
get { return _amount; }
set { _amount = value; }
}
#endregion
}

如果 Fan 和 Prefix 列具有相同的值,那么我只需将它们作为一列并将数量相加即可。怎么做?

LIST 1
FAN PREFIX AMOUNT
F1 P1 10
F1 P2 20
F2 P2 50

LIST 2
FAN PREFIX AMOUNT
F1 P1 30
F1 P3 20
F2 P2 30

OUTPUT
FAN PREFIX AMOUNT
F1 P1 40
F1 P2 20
F1 P3 20
F2 P2 80

我需要这样的输出。实现这一目标的最佳方法是什么?

最佳答案

var l1 = new List<TestClass>
{
new TestClass{Fan = "F1", Prefix = "P1", Amount = 10},
new TestClass{Fan = "F1", Prefix = "P2", Amount = 20},
new TestClass{Fan = "F2", Prefix = "P2", Amount = 50},
};

var l2 = new List<TestClass>
{
new TestClass{Fan = "F1", Prefix = "P1", Amount = 30},
new TestClass{Fan = "F1", Prefix = "P3", Amount = 20},
new TestClass{Fan = "F2", Prefix = "P2", Amount = 30},
};

var result = l1.Concat(l2).GroupBy(f => new { f.Fan, f.Prefix })
.Select(g => new TestClass
{
Fan = g.Key.Fan,
Prefix = g.Key.Prefix,
Amount = g.Sum(_ => _.Amount)
})
.ToList();
//Fan Prefix Amount
//F1 P1 40
//F1 P2 20
//F2 P2 80
//F1 P3 20

首先我们将两个列表放在一起(List.Concat),然后将具有相同FanPrefix的元素组合在一起(GroupBy),最后我们总结了每组的数量。

关于c# - 基于两列聚合两个相同的列表并对第三列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952458/

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