2014-07-14 32 views
0

我有一個數據表,我一直在清理,並將值放入其中。因此,在執行時間在表中的數據看起來像一旦這種將行添加到數據表(如果截然不同)

1211 A B C

1212 d電子網

我有一個數據表dt_new並添加這兩個行。(因爲第一列是不同的)。這樣

1213 IJK

1213 LMN

在這種情況下,我想沒有什麼行添加到我的dt_new 有些時候,數據結束了。(因爲第一列是相同的兩行) 我該怎麼做?看起來很簡單,但我結束了不同的結果。我通過迭代表格並檢查第一列來檢查,但沒有得到結果。 如果您需要更多的信息,請ask.Thanks

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 
+0

應該每個循環迭代通過像你擁有它一樣的行集合嗎?它們都遍歷'dtTemp.Rows',意味着'drTempRow(「CustomerID」)<> drInnerRow(「CustomerID」)'總是會失敗至少一次。 –

+0

@BubbleHearth。是。 dtTemp是包含行的表格。我究竟做錯了什麼? – RookieAppler

+0

難道你不應該比較'dtTemp'和'dt_new'中的內容嗎?那樣,如果'dtTemp'中的某些內容已經存在於'dt_new'中,它不會被添加? –

回答

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 
相關問題