删除重复行并在C#DataTable中计数

时间:2013-09-19 06:58:46

标签: c# linq datatable datarow

我有类似这样的DataTable。enter image description here

如果成年人的价值和儿童价值相同。我需要删除它并计算。我需要一个类似的输出。

enter image description here

任何人都可以帮我这个???。

谢谢,

2 个答案:

答案 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将每一行与前一行进行比较,如果它具有相同的值,则将其添加到要删除的行列表中,最后将删除列表中的行

相关问题