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