如何只删除数据表

时间:2015-12-18 10:59:20

标签: vb.net

我有一个数据表dtPackageTest,其中包含以下行

testid  testname
------  -----------
1        abc
2        xyz
1        abc
2        xyz

我跟着这个answer但是删除了所有重复的行,我的预期输出是

testid  testname
------  -----------
1        abc
2        xyz

我的代码:

 Dim tblDups = From r In dtPackageTest _
                      Group By Dups = New With {Key .testid = CInt(r("testid")), Key .test = CStr(r("test"))} Into Group _
                      Where (Group.Count > 1) _
                      Select Dups
        Dim dupRowList = (From r In dtPackageTest _
                          Join dupRow In tblDups _
                          On dupRow.testid Equals CInt(r("testid")) _
                          And dupRow.test Equals CStr(r("test")) _
                          Select r).ToList()
        For Each dup In dupRowList
            dtPackageTest.Rows.Remove(dup)
        Next

1 个答案:

答案 0 :(得分:0)

在现有代码中进行以下更改,这将按预期工作: (我想这应该是一个古老的学校逻辑,但它可以工作

'Add order by  - Order By Dups.testid
        Dim tblDups = From r In dtPackageTest _
                      Group By Dups = New With {Key .testid = CInt(r("testid")), Key .test = CStr(r("test"))} Into Group _
                      Where (Group.Count > 1) Order By Dups.testid _
                      Select Dups

        'Add order by  - Order By r("testid")
        Dim dupRowList = (From r In dtPackageTest _
                          Join dupRow In tblDups _
                          On dupRow.testid Equals CInt(r("testid")) _
                          And dupRow.test Equals CStr(r("test")) Order By r("testid") _
                          Select r).ToList()


        Dim id As Integer = 0
        For Each dup In dupRowList
            'Checking for testid is already removed or not
            If id <> dup("testid") Then
                id = dup("testid")
                dtPackageTest.Rows.Remove(dup)
            End If
        Next
相关问题