在下面的代码中,我想在deptGroup的每个分组中分别为OBFY和CFY做一笔总和。任何人有任何想法,我尝试过coupla的东西,但无法得到它。谢谢!
var deptGroup = prodCostsTotals.AsQueryable()
.Select(r => dt.Rows.Add(new object[]
{
Convert.ToInt32(r.Field<string>("Proc")),
r.Field<string>("UnitL"),
r.Field<Decimal?>("OBFY"),
r.Field<Decimal?>("CFY")
})).GroupBy(g => g.Field<string>("Proc"));
答案 0 :(得分:2)
在我看来,你过度使用DataRow
。如果你的数据是一个很好的类,你可以这样写:
data.GroupBy(x => x.Proc)
.Select(g => new
{
Proc = g.Key,
OBFYSum = g.Sum(x => x.OBFY),
CFYSum = g.Sum(x => x.CFY)
})
但如果你真的想从DataTable
开始并将中间结果添加到另一个DataTable
,你可以这样做:
prodCostsTotals.AsQueryable()
.Select(r => dt.Rows.Add(new object[]
{
Convert.ToInt32(r.Field<string>("Proc")),
r.Field<string>("UnitL"),
r.Field<Decimal?>("OBFY"),
r.Field<Decimal?>("CFY")
}))
.GroupBy(g => g.Field<string>("Proc"))
.Select(g => new
{
Proc = g.Key,
OBFYSum = g.Sum(x => x.Field<Decimal?>("OBFY")),
CFYSum = g.Sum(x => x.Field<Decimal?>("CFY"))
})
请注意,我不知道您对AsQueryable()
的使用是否会对此查询的第一部分产生任何影响,但它肯定不会对分组产生任何影响。