我有一张桌子,如下图所示。我需要从表格中提取一个列表,并根据国家/地区列出该列表。这个国家没有重复。因此,例如,中国只会出现一次,其总薪资将被添加,其总债务将被添加,而所有其他列将被分别添加。因此,它看起来应该像下面这样:
Country --- Totay Pay---Total Debt--- NetAmount
China-- (3.1+4.2)B--- (2.0+2.0)B----(8+4)B
India--
Russia---
我希望可以使用LINQ表达式。我曾尝试使用GroupBy和其他运营商,但无法理解。
GroupBy运算符是一个很好的方向-您应按国家/地区分组并使用其重载之一对其他值求和:
根据指定的键选择器功能对序列的元素进行分组,并根据每个组及其键创建结果值。
假设数据如下:
var data = new List<Data>()
{
new Data() { Country = "China", Index = 2, TotalPay = 3.1M, TotalDebt = 2.0M, NetAmount = 8.0M},
new Data() { Country = "India", Index = 4, TotalPay = 2.1M, TotalDebt = 3.0M, NetAmount = 9.0M},
new Data() { Country = "China", Index = 8, TotalPay = 5.1M, TotalDebt = 4.0M, NetAmount = 10.0M},
};
你可以写:
var results = data.GroupBy(x => x.Country, (key, elements) => new Data()
{
Country = key,
Index = elements.Sum(v => v.Index),
TotalPay = elements.Sum(v => v.TotalPay),
TotalDebt = elements.Sum(v => v.TotalDebt),
NetAmount = elements.Sum(v => v.NetAmount)
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句