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

假设detailrecordsIEnumerable<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();  

c# LINQ:将细节对象投影到摘要对象

你要找的东西是这样的:

var results = detailRecords
        .GroupBy(x => x.Account)
        .Select(c => new Summary
        {
            Account = c.Key,
            Total = c.Sum(y => y.Credit + y.Debit)
        }).ToList();
相关文章: