从DataTable中删除欺骗行

时间:2010-09-10 13:37:02

标签: sql vb.net

_CheckPayees = ds.Tables("Payees")

_CheckPayees是一个DataTable变量。在使用上面的代码设置之后,我想通过它并从中删除重复的行。这些行必须完全是dupes,比如说两列具有匹配的值,而另一列则没有,这不算是欺骗。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

没关系......这很有效。

我讨厌回答我自己的问题,但是...我认为我已经坚持了一段时间,然后找到它,而且还没有答案,我会发布我的,因为其他人可能需要它来。

Private Function EliminateDuplicates(ByVal dt As DataTable) As DataTable
            Dim ssort As String = ""
            Dim col As DataColumn
            Dim scol As DataColumn
            For Each scol In dt.Columns
                If ssort <> "" Then ssort &= ","
                ssort &= scol.ColumnName
            Next

            dt.DefaultView.Sort = ssort
            Dim i As Integer, bEquals As Boolean, c As Integer, ccount As Integer
            ccount = dt.Columns.Count
            For i = dt.Rows.Count - 1 To 1 Step -1
                bEquals = True
                For c = 0 To ccount - 1
                    If dt.DefaultView(i)(c).ToString() <> dt.DefaultView(i - 1)(c).ToString() Then
                        bEquals = False
                        Exit For
                    End If
                Next c

                If bEquals Then
                    dt.DefaultView(i).Delete()
                End If
            Next

            Return dt

        End Function