これが許可されていない理由がわかります。
foreach (Thing t in myCollection) {
if (shouldDelete(t) {
myCollection.Delete(t);
}
}
しかし、これはどうですか?
foreach (Thing t in myCollection.Where(o=>shouldDelete(o)) {
myCollection.Delete(t);
}
これが失敗する理由がわかりません。「Where()」メソッドは明らかに元のコレクションを返さないため、元のコレクションから何かを削除しようとするときに、元のコレクションを列挙していません。