Мне кажется, вы злоупотребляете 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()
на первую часть этого запроса, но, безусловно, это не повлияет на группировку.