C#datatable如何去重
时间: 2024-11-23 22:23:39 浏览: 57
在C#中,DataTable是一个用于存储表格数据的数据结构,它并不直接提供去重的功能。如果你想去除DataTable中的重复行,通常需要通过遍历每一行,并根据特定的列进行比较判断来进行操作。以下是一种常见的做法:
```csharp
// 假设DataTable叫做dt
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
foreach (DataRow row in dt.Rows)
{
Dictionary<string, object> newRow = row.ItemArray.ToDictionary(i => i.GetType().Name, i => i);
if (!rows.Contains(newRow))
{
rows.Add(newRow);
}
}
// 现在rows列表中就没有重复的行了,你可以将其转换回DataTable
DataTable uniqueDt = new DataTable();
foreach (var item in rows)
{
DataRow dr = dt.NewRow();
foreach (var field in item.Keys)
{
dr[field] = item[field];
}
uniqueDt.Rows.Add(dr);
}
```
在这个例子中,我们首先将DataTable的每一行转换为字典,然后检查这个字典是否已经在列表中存在,如果不存在就添加到列表中。最后,再创建一个新的DataTable,把去重后的数据插入。
阅读全文