For Each Dr As DataRow In InvoiceDT.Rows
Dim DrResult As Array = PaymentInvoiceDT.Select("Amount='" & Dr("Amount").ToString() & "'")
If DrResult.Length > 0 Then
''some code
Else
InvoiceDT.Rows.remove(Dr)
End If
Next
It is giving error because when you changed something in datatable, its index get changed.