C#LINQ:将详细信息对象投影到摘要对象

时间:2016-09-26 21:51:44

标签: c# linq

我有一个.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;}

}

我正在尝试整合和预测这个&#34;详细信息&#34;将对象转换为汇总对象,其中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();  

1 个答案:

答案 0 :(得分:0)

您正在寻找的是这样的:

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