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

如何在VB.NET中无重复复制DataGridView列至另一DataGridView

VB.NET:DataGridView列去重复制实现方案

方法一:直接操作DataGridView行(适合非绑定数据源)

如果你的DataGridView是手动添加行数据、未绑定数据源,可按以下步骤实现:

  1. 确保DGV2已创建对应列(若未创建)
' 检查并添加Fruit列到DGV2
If Not DGV2.Columns.Contains("Fruit") Then
    Dim fruitCol As New DataGridViewTextBoxColumn With {
        .Name = "Fruit",
        .HeaderText = "Fruit"
    }
    DGV2.Columns.Add(fruitCol)
End If
  1. 提取DGV1中Fruit列的唯一值并填充到DGV2
' 使用HashSet自动去重
Dim uniqueFruits As New HashSet(Of String)()

For Each row As DataGridViewRow In DGV1.Rows
    ' 跳过新增行(若DGV允许用户添加新行)
    If Not row.IsNewRow Then
        Dim fruitVal As String = row.Cells("Fruit").Value?.ToString()
        If Not String.IsNullOrEmpty(fruitVal) Then
            uniqueFruits.Add(fruitVal)
        End If
    End If
Next

' 清空DGV2现有数据(按需选择)
DGV2.Rows.Clear()

' 将唯一值写入DGV2
For Each fruit In uniqueFruits
    DGV2.Rows.Add(fruit)
Next

方法二:操作数据源DataTable(推荐,高效适配绑定场景)

如果DataGridView绑定到DataTable,直接操作数据源会更高效:

' 假设DGV1的数据源是DataTable dtSource
Dim dtUnique As DataTable = dtSource.DefaultView.ToTable(True, "Fruit")
' 参数说明:True表示去重,"Fruit"指定要保留的列名

' 将去重后的DataTable绑定到DGV2
DGV2.DataSource = dtUnique

关键说明

  • HashSet(Of String)会自动忽略重复值,适合小数据量的手动遍历场景。
  • DefaultView.ToTable()是DataTable内置的去重方式,性能更优,适合大数据量的绑定场景。
  • 若需保留DGV2原有数据(仅新增不重复项),可先将DGV2现有Fruit值加入HashSet,再添加DGV1的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:30:55