你好,我有一个这样的数据表:
Id Amount 1 Amount 2 Amount 3
1 2 2 2
12 4 6 4
12 6 6 5
22 7 2 1
22 7 2 2
我需要像这样获取我的数据表:
Id Amount 1 Amount 2 Amount 3
1 2 2 2
12 10 12 9
22 14 4 3
我最初尝试用匿名方法来完成此操作,但我需要将其返回到另一个类,而这是无法用匿名方法完成的。
我的第二次尝试是这样做,以便可以将其退回:
DataTable ddt = dt.AsEnumerable()
.Sum(g => g.Field<int>("Amount 1"))
.GroupBy(g => new { Col1 = g["ID"] })
.Select(g => g.OrderBy(r => r["ID"]).First())
.CopyToDataTable();
这段代码肯定不会编译,但如果可能的话,任何帮助/建议将非常感激。我对 linq 很陌生。
You can GroupBy
首先,然后将组投影到DataRow
s,然后创建DataTable
using CopyToDataTable
扩大:
var newDt = dt.AsEnumerable()
.GroupBy(r => r.Field<int>("Id"))
.Select(g =>
{
var row = dt.NewRow();
row["Id"] = g.Key;
row["Amount 1"] = g.Sum(r => r.Field<int>("Amount 1"));
row["Amount 2"] = g.Sum(r => r.Field<int>("Amount 2"));
row["Amount 3"] = g.Sum(r => r.Field<int>("Amount 3"));
return row;
}).CopyToDataTable();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)