我有类似这样的DataTable。
如果成年人的价值和儿童价值相同。我需要删除它并计算。我需要一个类似的输出。
任何人都可以帮我这个???。
谢谢,
答案 0 :(得分:2)
您希望按成人+儿童分组:
var groups = tblRoooms.AsEnumerable()
.GroupBy(r => new{ Adults = r.Field<int>("Adults"), Child = r.Field<int>("Child") });
var tblRooomsCopy = tblRoooms.Clone(); // creates an empty clone of the table
foreach(var grp in groups)
{
int roomCount = grp.Sum(r => r.Field<int>("Roomcount"));
DataRow row = tblRooomsCopy.Rows.Add();
row.SetField("RoomNo", grp.First().Field<int>("RoomNo"));
row.SetField("Roomcount", roomCount);
row.SetField("Adults", grp.Key.Adults);
row.SetField("Child", grp.Key.Child);
}
现在,您在tblRooomsCopy
中获得了所需的结果。
答案 1 :(得分:0)
我不会为您编写完整的代码,但我将描述一种建议的方式:首先按成人和子项订购数据表,这将导致相同的行连续,创建一个列表,您将填充要删除的行 然后使用foreach将每一行与前一行进行比较,如果它具有相同的值,则将其添加到要删除的行列表中,最后将删除列表中的行