数据表+;使用循环删除c#中的一行
我有一个数据表,我想删除一行,这是我的代码,它引发了一个异常数据表+;使用循环删除c#中的一行,c#,asp.net,datatable,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(); } } 我甚至尝试了if station外部,而forloop
foreach (DataRow row in dt1.Rows)
{
if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
{
row.Delete();
dt1.AcceptChanges();
}
}
我甚至尝试了if station外部,而forloop外部仍然会抛出错误,我不知道如何完成这项任务这是我得到的例外:
Collection was modified; enumeration operation might not execute.
最终工作代码:
foreach (DataRow row in dt1.Select())
{
if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
{
row.Delete();
}
}
在迭代
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();
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();
List rowsToDelete=new List();
foreach(dt1.Rows中的数据行)
{
如果((行[“名称”]=“选择一个查找簿”)|
(行[“名称”]=“创建新的Lookbook”))
{
rowsToDelete.Add(行);
}
}
foreach(rowsToDelete中的DataRow行)
{
行。删除();
}
dt1.AcceptChanges();
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();
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();
List rowsToDelete=dt1.Rows.AsEnumerable()
.Where(row=>(row[“Name”]==“选择一个Lookbook”)|
(行[“名称”]=“创建新的Lookbook”))
.Tolist();
foreach(rowsToDelete中的DataRow行)
{
行。删除();
}
dt1.AcceptChanges();
使用dt1.Select()代替dt1.Rows
这里的目标不是使用集合本身,而是使用一个不是行的行数组集合当我遇到这个问题时,我就是这样做的
Dim index As Integer = 0
Dim count As Integer = resultsDT.Rows.Count - 1
For i As Integer = 0 To count
If resultsDT.Rows(index).Item("something") = "something" Then
resultsDT.Rows(index).Delete()
resultsDT.AcceptChanges()
index = index - 1
End If
index = index + 1
i = i + 1
Next
我知道这是一个非常好的答案,但我必须同意皮埃尔的答案,因为我相信这很容易做到。我真的很感谢你的帮助。工作完全如我所愿,谢谢