You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需新增按钮实现DataGridView重复行移除

解决DataGridView无需按钮移除重复行的C#方案

当然可以实现!不用额外添加按钮,我们可以在填充DataGridView的过程中直接处理重复行,给你两种实用的C#代码方案,都不需要依赖SQL语句去重:

方案1:先对数据源去重,再填充DataGridView

这种方式效率更高,适合数据量较大的场景,先通过LINQ对原始DataTable进行去重处理,再将去重后的数据集填充到DataGridView中:

// 假设d是你从SQL Server获取的原始DataTable
// 按要显示的两列组合分组,取每组第一行实现去重
var distinctRows = d.AsEnumerable()
                    .GroupBy(row => new 
                    {
                        CombinedCol = row["c1"].ToString() + " " + row["c2"].ToString(),
                        Col3 = row["c3"].ToString()
                    })
                    .Select(group => group.First())
                    .CopyToDataTable();

// 清空DataGridView原有行,再填充去重后的数据
dgw.Rows.Clear();
foreach (DataRow r in distinctRows.Rows)
{
    dgw.Rows.Add(r["c1"].ToString() + " " + r["c2"].ToString(), r["c3"]);
}

说明

  • 这里的去重逻辑是两列值完全相同才算重复,如果你的重复判断只需要基于第一列(c1+c2的组合),只需要修改GroupBy的键为CombinedCol即可。
  • 用GroupBy+Select(group => group.First())的方式,会保留每组重复数据中的第一行。

方案2:填充时实时检查重复行

如果不想提前处理整个DataTable,可以在遍历添加行的过程中,实时检查当前DataGridView是否已经存在相同的行,避免重复添加:

dgw.Rows.Clear(); // 先清空DataGridView的原有内容
foreach (DataRow r in d.Rows)
{
    string targetCol1 = r["c1"].ToString() + " " + r["c2"].ToString();
    string targetCol3 = r["c3"].ToString();
    
    bool isDuplicate = false;
    // 遍历已有的DataGridView行,检查是否重复
    foreach (DataGridViewRow existingRow in dgw.Rows)
    {
        // 跳过DataGridView的默认新行(如果开启了允许添加新行的话)
        if (!existingRow.IsNewRow)
        {
            if (existingRow.Cells[0].Value.ToString() == targetCol1 &&
                existingRow.Cells[1].Value.ToString() == targetCol3)
            {
                isDuplicate = true;
                break;
            }
        }
    }
    
    // 非重复行才添加到DataGridView中
    if (!isDuplicate)
    {
        dgw.Rows.Add(targetCol1, targetCol3);
    }
}

说明

  • 如果你的DataGridView没有开启允许用户添加新行的功能,可以去掉!existingRow.IsNewRow的判断条件。
  • 这种方式适合数据量较小的场景,避免提前遍历整个数据集。

内容的提问来源于stack exchange,提问作者heymycoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:00:04