これは私にとって大きな混乱でした。私は次のコードを持っています:1つのコレクションから削除されたアイテムは、暗黙的に2番目のコレクションからも削除されます。なぜですか?
IEnumerable<WorkflowStateData> data = model.Data.Except(
request.WorkflowState.CustomData.Select(x => new Model.WorkflowStateData {Key = x.Key}),
new WorkflowStateDataEqualityComparer());
foreach (var item in data) // makes the comparison (and exception) based on the value of property 'Key'
{
model.Data.Remove(item);
stateDataSet.Remove(item);
}
これは、アイテムの新しいコレクションを作成し、foreachを使用して列挙するために使用する必要があります。元のコレクションからアイテムを削除する必要がありますが、元のコレクションと "データ"コレクションの両方から削除してInvalidOperationExceptionをスローします。コレクションが変更されました。どうして?
メモリ内の同じオブジェクトへの参照です –