当我使用以下代码时,我收到“收集已修改;枚举操作可能无法执行”错误。如果我理解正确,我认为这意味着我无法枚举此数据表并同时从中删除行。我的问题是,我还能做些什么来实现从我的数据表中删除某些行的结果? 这是我的代码:
// Now let's loop through the datatable and find any account with no
// LYSMKWh value and less than 4000 KWh current usage. We'll remove those
// from the datatable.
currentRow = 0;
foreach (DataRow row in resultsDT.Rows)
{
if ((string)resultsDT.Rows[currentRow]["LYSMKWh"] == "0")
{
int intKWh = Convert.ToInt32(resultsDT.Rows[currentRow]["KWH"]);
if (intKWh < 5000)
{
resultsDT.Rows[currentRow].Delete();
}
}
resultsDT.AcceptChanges();
currentRow++;
}
答案 0 :(得分:2)
你可以做以下两件事之一:
1)您可以使用for循环以相反的顺序迭代集合并删除内联行:
for(int i = resultsDT.Rows.Count - 1; i >= 0; i--)
{
if ((string)resultsDT.Rows[i]["LYSMKWh"] == "0")
{
int intKWh = Convert.ToInt32(resultsDT.Rows[i]["KWH"]);
if (intKWh < 5000)
{
resultsDT.Rows[i].Delete();
}
}
resultsDT.AcceptChanges();
}
2)您可以将要删除的行添加到单独的集合中,然后在迭代整个原始集合后将其删除。这显然效率较低,所以我不会担心样本。