我有类似这样的数据表。
如果成人值和儿童值相同。我需要删除它并计算它。我需要一个类似这样的输出。
谁能帮我解决这个问题???
谢谢,
您想按成人+儿童分组:
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
。
我不会为您编写完整的代码,但我将描述一种建议的方式:首先按成人和儿童排序数据表,这将导致相同的行是连续的,创建一个列表,您将填充要删除的行,然后使用 foreach将每一行与前一行进行比较,如果它具有相同的值,则将其添加到要删除的行列表中,最后您将删除列表中的行