我删除数据库时为什么要修改我的集合?

时间:2016-09-22 19:55:52

标签: c# linq collections foreach smo

我有以下系列:

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()正在修改我的集合的机制更感兴趣。我猜它可能与延迟有关执行,但我不确定。)

0 个答案:

没有答案