0
私はこれに多くの時間を費やし、どこにもいない。私は2つのDGVを持っていて、同じ値の2つの列を比較しようとしています.DGV2の値がDGV1にない場合、その値はDGV3に移動します。ここの問題は論理的ですが、この間違った解決策で主演しすぎると、私はそれ以上は動かすことができなくなりました。2つのDGVで重複を見つける
DGV1全体がIF
より前にDGV2の最初の値で検索され、DGV2の他のすべての値ですべて検索されるはずです。本当にここで助けが必要なのか分かりません。
ありがとうございました。
Dim row As String() = New String() {"", "", "", ""}
Dim x As Integer = 0
For A = 0 To DGV2.RowCount - 1
For B = 0 To DGV1.RowCount - 1
If GetTextOrEmpty(DGV1.Rows(A).Cells(4).Value) = GetTextOrEmpty(DGV2.Rows(B).Cells(1).Value) Then
Else
'PROBLEM : This is going to add row WITH SAME VALUES everytime it's <>
DGV3.Rows.Add(row)
DGV3.Rows(x).Cells(0).Value = DGV2.Rows(B).Cells(0).Value
DGV3.Rows(x).Cells(1).Value = DGV2.Rows(B).Cells(2).Value
DGV3.Rows(x).Cells(2).Value = DGV2.Rows(B).Cells(1).Value
DGV3.Rows(x).Cells(3).Value = DGV2.Rows(B).Cells(3).Value
x = x + 1
End If
Next
Next
EDIT:Nevermind。
Dim row As String() = New String() {"", "", "", ""}
Dim x As Integer = 0
For A = DGV2.RowCount - 1 To 0 Step -1
For B = 0 To DGV1.RowCount - 1
If GetTextOrEmpty(DGV1.Rows(B).Cells(4).Value) = GetTextOrEmpty(DGV2.Rows(A).Cells(1).Value) Then
DGV2.Rows.Remove(DGV2.Rows(A))
End If
Next
Next
For i = 0 To DGV2.RowCount - 1
DGV3.Rows.Add(row)
DGV3.Rows(x).Cells(0).Value = DGV2.Rows(i).Cells(0).Value
DGV3.Rows(x).Cells(1).Value = DGV2.Rows(i).Cells(2).Value
DGV3.Rows(x).Cells(2).Value = DGV2.Rows(i).Cells(1).Value
DGV3.Rows(x).Cells(3).Value = DGV2.Rows(i).Cells(3).Value
x = x + 1
Next
ではなく、各セルに突っつい、あなたがデータソースとしてのDataTableを使用する場合は、より迅速でdupesのためにそれらを照会することができ、これに解決される問題linqの数行 – Plutonix