2010-04-02 31 views
0

我正在遍歷表格行。如果行的行是空的,我只想刪除行。 它顯示一個錯誤我無法從循環中移除表格中的一行

Public Sub RemoveBlankRow(ByVal MyDataTable As DataTable) 
     Try 
      Dim MyRowStr As String = String.Empty 
      For Each MyRow As DataRow In MyDataTable.Rows 
       MyRowStr = "" 
       For Each MyCellText As Object In MyRow.ItemArray 
        MyRowStr = MyRowStr + MyCellText.ToString 
       Next 
       MyRowStr = Replace(MyRowStr, "0", " ") 
       MyRowStr = Replace(MyRowStr, ".", " ") 
       If MyRowStr.Trim = String.Empty Then 
        MyDataTable.Rows.Remove(MyRow) 
       End If 
      Next 
     Catch ex As Exception 

     End Try 
    End Sub 

如何克服這個問題?

+0

只是說明:string.Empty與null不同。 – 2010-04-02 10:08:28

回答

0

創建您的MyDataTable.Rows的副本,迭代並從原始集合中刪除行。

1

一般而言,當您迭代它時,您不能修改集合的結構。

一個簡單的解決方案是在迭代您的表時,將需要刪除的行存儲在單獨的刪除列表中。完成迭代後,遍歷刪除列表並從原始列表中刪除它們。