I have a data table and I want to delete a row here is my code it's throwing me an exception
foreach (DataRow row in dt1.Rows)
{
    if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
    {
        row.Delete();
        dt1.AcceptChanges();
    }
}
I even tried outside the if statment and outside forloop still throws me error any idea how to achieve this task this is the exception I get:
Collection was modified; enumeration operation might not execute.
Final working Code:
foreach (DataRow row in dt1.Select())
{
    if ((row["Name"] == "Select a Lookbook") ||    (row["Name"] == "Create a new Lookbook"))
    {
        row.Delete();                                       
    }
}
                There are two methods you can use to delete a DataRow object from a DataTable object: the Remove method of the DataRowCollection object, and the Delete method of the DataRow object. Whereas the Remove method deletes a DataRow from the DataRowCollection, the Delete method only marks the row for deletion.
You need a way to delete the row from DataTable directly without iterating thru the Rows collection. DataTable. Rows collection has Remove method which takes an instance of DataRow as a parameter. So if you can get hold of the DataRow to be deleted, then all you need to do is call usersTable.
Highlight the row, right-click the row header, and select delete. Alternately, try typing Ctrl minus.
Instead of using dt1.Rows, use dt1.Select()
The goal here is not to use the collection itself, but rather an array of row that is not the Rows collection
Create a list of rows to delete while iterating over DataTable.Rows, then delete them all separately.
Non-LINQ solution:
List<DataRow> rowsToDelete = new List<DataRow>();
foreach (DataRow row in dt1.Rows)
{
    if ((row["Name"] == "Select a Lookbook") || 
        (row["Name"] == "Create a new Lookbook"))
    {
        rowsToDelete.Add(row);
    }
}
foreach (DataRow row in rowsToDelete)
{
    row.Delete();
}
dt1.AcceptChanges();
LINQ solution:
List<DataRow> rowsToDelete = dt1.Rows.AsEnumerable()
    .Where(row => (row["Name"] == "Select a Lookbook") || 
                  (row["Name"] == "Create a new Lookbook"))
    .Tolist();
foreach (DataRow row in rowsToDelete)
{
    row.Delete();
}
dt1.AcceptChanges();
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With