c# winform dataGridView1 的内容怎么去重
时间: 2024-09-20 09:16:47 浏览: 66
c# winform datagridview联合access数据库 查询 删除 添加 生成报表
5星 · 资源好评率100%
在 C# WinForm 中,如果你想要对 DataGridView1 控件中的数据进行去重,可以采取以下步骤:
1. 首先,你需要将 DataGridView1 中的数据源转换成适合操作的集合,例如 List<T> 或 DataTable。
```csharp
List<DataRowView> dataRows = dataGridView1.SelectedRows.Cast<DataRowView>().ToList();
```
或者
```csharp
DataTable dataTable = dataGridView1.DataSource as DataTable;
List<DataRow> rows = dataTable.AsEnumerable().ToList();
```
这里假设 `dataGridView1.DataSource` 已经被设置为 DataTable 或者支持 Cast 到 IEnumerable 类型的对象。
2. 使用 LINQ 的 Distinct() 方法对数据集进行去重,它会返回一个新的只包含唯一元素的新集合。
```csharp
List<DataRow> uniqueRows = rows.Distinct().ToList();
```
或者对于 DataRowView,
```csharp
List<DataRowView> uniqueDataRows = dataRows.Distinct(DataGridViewEqualityComparer.Default).ToList();
```
这里使用了 `DataGridViewEqualityComparer.Default` 来比较 DataRowView,这是为了处理 DateTime 和 DBNull 的默认规则。
3. 最后,你可以选择将去重后的数据再次设置回 DataGridView1,或者用新的列表创建一个 DataTable 并设置给 DataGridView1:
```csharp
if (dataTable != null)
{
dataTable.Clear();
foreach (DataRow row in uniqueRows)
{
dataTable.ImportRow(row);
}
dataGridView1.DataSource = dataTable;
}
else if (uniqueDataRows.Count > 0)
{
dataGridView1.DataSource = uniqueDataRows;
}
```
阅读全文