将 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)
}
);
我需要将 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)
}
);