使用vb.net如何根据同一行中找到的两个单元格值删除重复项?我知道如何在每一列中做到这一点,而不仅仅是在列集中。
我在想什么
For LoopA As Integer = 0 To DataGridView1.Rows.Count - 2
For LoopB As Integer = LoopA + 1 To DataGridView1.Rows.Count - 2
If DataGridView1.Rows(LoopA).Cells(2).Value = DataGridView1.Rows(LoopB).Cells(2).Value & DataGridView1.Rows(LoopA).Cells(3).Value = DataGridView1.Rows(LoopB).Cells(3).Value Then
DataGridView1.Rows.RemoveAt(LoopB)
End If
Next
Next
我没有被客户的最后一列吸引。第一列是产品类型,第二列是产品长度。
我希望HD 300系列仅出现一次,因为这是唯一出现的非唯一组合。
我该如何实现?
答案 0 :(得分:0)
如果您不需要最后一列,最好的解决方案就是更改查询,以便您可以使用DISTINCT
关键字,正如我之前指出的那样。不过,它不会与“客户”列配合使用,因为该列不会合并。
还有另一种方法,我认为不那么优雅,但仍然有效。您可以创建一个新的DataTable,使其没有重复,然后将其替换为DataGridView的DataSource。
Dim originTable as DataTable = yourDataGridView.DataSource
Dim destinationTable As New DataTable
destinationTable.Columns.Add("Type", GetType(String))
destinationTable.Columns.Add("Length", GetType(Integer))
For Each row As DataRow In originTable.Rows
Dim duplicates() As DataRow = destinationTable.Select("Type = " & row("Type").ToString & " AND Length = " & row("Length").ToString)
If duplicates.Length = 0 Then
destinationTable.Rows.Add(row("Type").ToString, row("Length"))
End If
Next
yourDataGridView.DataSource = destinationTable
我无法立即对其进行测试,因此请考虑将其作为建议,而不是直接采用解决方案。希望对您有帮助!