如何在VB.NET中无重复复制DataGridView列至另一DataGridView
VB.NET:DataGridView列去重复制实现方案
方法一:直接操作DataGridView行(适合非绑定数据源)
如果你的DataGridView是手动添加行数据、未绑定数据源,可按以下步骤实现:
- 确保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
- 提取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
相关产品推荐
相关产品推荐

