将 IEnumerable 转换为求和项 Linq

Convert IEnumerable to Sum item Linq

我需要将 IEnumerable 转换为其他内容才能使用 Sum。我该怎么做才能实现这一目标?

CsTotCommit = h.Sum(x => x.CSTotCommit)

我收到一条错误消息: CapStackTrancheDTO 不包含 'Sum' 接受 CapStackTrancheDTO 类型的第一个参数的定义。

        IEnumerable<CapStackTrancheDTO> debtRank = debt.AsEnumerable()
                        .Select((g,index) =>
                        new CapStackTrancheDTO
                        {
                            Rankid = index + 1,
                            CsTrancheId = g.CsTrancheId,
                            CsId = g.CsId,
                            CsTotCommit = g.CsTotCommit,
                        });


        IEnumerable<CapStackTrancheDTO> debtSum = debtRank
                      .Select(h =>
                      new
                      {
                          CsId = h.CsId,
                          CsTotCommit = h.Sum(x => x.CSTotCommit)
                      });

以下是 class 的定义:

public class CapStackTrancheDTO
{
    public int? Rankid { get; set; }
    public int? CsTrancheId { get; set; }
    public int? CsId { get; set; }
    public decimal? CsTotCommit { get; set; }

}

我想按 CsId 和 SUM 对多条记录进行分组。

根据评论,您说过要按 CsId 分组,然后求和。

目前,您没有应用任何分组。

使用.GroupBy方法,像这样:

IEnumerable<CapStackTrancheDTO> debtSum = debtRank
    .GroupBy(h => h.CsId)
    .Select(h =>
        new CapStackTrancheDTO
        {
            CsId = h.Key, // the value we grouped on above is now available in `Key`
            CsTotCommit = h.Sum(x => x.CSTotCommit)
        }
   );