【发布时间】:2016-08-18 10:05:17
【问题描述】:
我有一个重复行如下的数据表。
| | | | | |
|cid | usrnme | pname | prate | cabin |
|-----------------------------------------------------------|
|c11 | demo1@gmail.com | sample1 | 2000 | B2 | *******
|c14 | demo2@live.com | sample2 | 5000 | B3 |
|c15 | demo3@yahoo.com | sample3 | 8000 | B2 |
|c11 | demo1@gmail.com | sample1 | 2000 | B2 | *******
|c18 | demo4@gmail.com | sample4 | 3000 | L1 |
|c11 | demo5@gmail.com | sample5 | 7400 | B4 | &&&&&&&
============================================================
注意:同一ID有不同的数据,见&&&&&&&行
上面重复的两行如何得到一行。我试过This
这是我使用的代码。
public DataTable RemoveduplicateRows(DataTable dTable,string colName)
{
colName = "cabin";
Hashtable hTable = new Hashtable();
ArrayList duplicateArrayList = new ArrayList();
foreach(DataRow drow in dTable.Rows)
{
if (hTable.Contains(drow[colName]))
duplicateArrayList.Add(drow);
else
{
hTable.Add(drow[colName], string.Empty);
}
}
foreach (DataRow dRow in duplicateArrayList)
dTable.Rows.Remove(dRow);
return dTable;
}
如果我使用上面的代码,它会根据cabin 避免重复,然后它会删除其 cabin 为 B2 的 all 记录并保留只有第一个。我想要的是只删除整行(保留一个并删除其他)。我该怎么做。
【问题讨论】:
-
为什么你从数据库中得到重复的行。对数据库中的重复行进行限制。在查询中使用
DISTINCT,GROUP BY子句
标签: c# datatable duplicates