c# LINQ:将细节对象投影到摘要对象
本文关键字:对象 投影 细节 LINQ | 更新日期: 2023-09-27 18:09:01
我有一个。csv文件,数据看起来像这样:
Account,Debit,Credit
1,10.00,5.00
1,10.00,10.00
2,5.00,5.00
2,10.00,10.00
此数据填充IEnumerable<Source>
。定义如下:
public class Detail {
public string Account {get; set;}
public decimal Debit {get; set;}
public decimal Credit {get; set;}
}
我试图将这个"细节"对象合并并投影到一个汇总对象中,其中Total是每个帐户的借方和贷方之和。
public class Summary {
public string Account {get; set;}
public decimal Total {get; set;}
}
我想要的最终结果是一个不同的账户列表,每个账户都有所有的借方和贷方,这样我就有了一个汇总预测,而不是每个账户/借方/贷方的多个行。
Account,Debit,Credit
1,5.00,0.00
2, 0.00, 0.00
假设detailrecords
是IEnumerable<Detail>
类型的已填充集合。
var results = detailrecords
.GroupBy(x => x.Account)
.Select(c => new Summary() {
Account = ?? I can't figure out how to access my detail properties here
Total = ?? I am not sure how to perform arithmetic without access to detail properties
}).ToList();
你要找的东西是这样的:
var results = detailRecords
.GroupBy(x => x.Account)
.Select(c => new Summary
{
Account = c.Key,
Total = c.Sum(y => y.Credit + y.Debit)
}).ToList();