我有以下系列:
IEnumerable<Microsoft.SqlServer.Management.Smo.Database> snapshots = svr.Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(some condition);
我正在迭代它并丢弃这些数据库:
foreach (Microsoft.SqlServer.Management.Smo.Database snapshot in snapshots)
{
snapshot.Drop()
}
(在这个循环中还有很多事情要发生,但这是我能解决的唯一问题。)
当循环到达第二次迭代时,我得到一个InvalidOperationException,因为该集合已被修改。
为什么会这样?
(注意:在snapshots
上调用ToList确实解决了这个问题,但我对snapshot.Drop()
正在修改我的集合的机制更感兴趣。我猜它可能与延迟有关执行,但我不确定。)