Dev*_*per 12 c# asp.net datatable
我有一个数据表,我想在这里删除一行是我的代码它给我一个例外
foreach (DataRow row in dt1.Rows)
{
if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
{
row.Delete();
dt1.AcceptChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
我甚至尝试在if语句之外,并且在forloop之外仍然会抛出错误任何想法如何实现此任务这是我获得的异常:
Collection was modified; enumeration operation might not execute.
Run Code Online (Sandbox Code Playgroud)
最终工作守则:
foreach (DataRow row in dt1.Select())
{
if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
{
row.Delete();
}
}
Run Code Online (Sandbox Code Playgroud)
在迭代时创建要删除的行列表DataTable.Rows,然后单独删除它们.
非LINQ解决方案:
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();
Run Code Online (Sandbox Code Playgroud)
LINQ解决方案:
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();
Run Code Online (Sandbox Code Playgroud)