我正在尝试从循环中移除DataTable
dt
中的某些行,我得到上述异常:
while (dt.Rows.Count > 0 && retry < Globals.PushRetryLimit)
{
var query = dt.AsEnumerable().Except(successBatch.AsEnumerable(), DataRowComparer.Default)
.AsEnumerable().Except(failBatch.AsEnumerable(), DataRowComparer.Default);
if (dt.AsEnumerable().Any())
dt = query.CopyToDataTable();
}
successBatch
和failBatch
都是DataTable
的{{1}}个克隆。
在提出此错误的其他问题中,我们正在处理dt
循环。为什么会出现这种错误?
堆栈跟踪:
foreach
答案 0 :(得分:0)
您正在使用foreach循环遍历集合中的元素(您的dataTable)。
Foreach查询枚举器并询问下一个元素。如果删除项目,则枚举器的状态将变为无效。枚举器必须存储一些日期,指示其当前位置。
你不应该这样做。也许使用另一个集合来跟踪更改或使用concurrent collections(阅读链接中的类)