如果不同,则向datatable添加行

时间:2014-07-14 19:35:37

标签: asp.net vb.net loops datatable distinct

我有一个数据表,我一直在清理,我把值放入其中。因此,一旦在执行时,表中的数据就像这样

1211 A B C

1212 D E F

我有一个数据表dt_new并添加这两行。(因为第一列是不同的)。 有时数据会像这样结束

1213 I J K

1213 L M N

在这种情况下,我想不要将任何行添加到我的dt_new中。(因为两行的第一列相同) 我该怎么做呢?看起来很简单,但我最终得到了不同的结果。我正在检查迭代表并检查第一列但没有得到结果。 如果您需要更多信息,请询问。谢谢

    For Each drTempRow As DataRow In dtTemp.Rows
                Dim intCounter As Integer = 0
                Dim intCounterEqual As Integer = 0
                For Each drInnerRow As DataRow In dtTemp.Rows
                    If drTempRow("CustomerID") <> drInnerRow("CustomerID") Then
                        intCounter += 1

                    Else
                        intCounterEqual += 1
                    End If
                Next
                If intCounterEqual = 1 AndAlso intCounter <> dtTemp.Rows.Count - 1 Then
                    Dim drNewRow As DataRow = dt_new.NewRow()
                    drNewRow.ItemArray = drTempRow.ItemArray
                    dt_new.Rows.Add(drNewRow)
                End If
            Next

1 个答案:

答案 0 :(得分:0)

你可以通过这种方式实现它而不需要嵌套循环:

请记住:在使用此代码之前,您必须先按dtTemp CustomerID排序。

Dim dt_new As DataTable = dtTemp.Clone()
Dim previousId As String = ""

For Each drTempRow As DataRow In dtTemp.Rows
    If Not drTempRow("CustomerID").ToString().Equals(previousId) Then
        dt_new.ImportRow(drTempRow)
    End If

    previousId = drTempRow("CustomerID").ToString()
Next