Search code examples
c#datatabledatarowcollection

Cannot remove rows from DataTable because "Collection was modified; enumeration operation might not execute"


This is my code to remove row from datatable:

DataTable dtapple = dt;

foreach (DataRow drapplicant in dtapple.Rows)
{
    int iapp = Convert.ToInt32(drapplicant["SrNo"].ToString());

    if (drapplicant["PassportExpDate"].ToString().Trim() != "")
    {
        //ViewState["iapp"] = drapplicant;
        dtapple.Rows.Remove(drapplicant);
    }
}

Now when I use above code the row is removed, but after that I get an error

Collection was modified; enumeration operation might not execute

I don't know exact reason.


Solution

  • Below code works for me :

    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
        var tempRow = dataTable.Rows[i];
        var temp = dataTable.Rows[i][0];
        for (int j = 0; j < dataTable.Rows.Count; j++)
        {
            DataRow rows = dataTable.Rows[j];
            if (temp == rows[0].ToString())
            {
                tempdatatable.Rows.Add(tempRow[0], tempRow[1]);
                dataTable.Rows.Remove(rows);      //Update happen here
            }
            tempdatatable.DefaultView.Sort = "gscitations DESC";
            dataGridView1.DataSource = tempdatatable;
        }
    }