С Платформой Объекта я пытаюсь удалить некоторые объекты из своего контекста объекта как этот:
foreach (var item in context.Items.Where( i => i.Value > 50 ) )
{
context.Items.DeleteObject(item);
}
С этим кодом у меня есть "Набор, был Изменен" Исключение.
Так, как я могу сделать, пакет удаляет?
Вы должны сначала получить элементы, которые вы хотите удалить, из коллекции, которую вы собираетесь изменить. Вы можете сделать это с помощью простого запроса LINQ (используя ToList () для принудительного выполнения):
var toDelete = context.Items.Where(i => i.Value > 50).ToList();
foreach(var item in toDelete)
{
context.Items.DeleteObject(item);
}
Или, если вам нравится компактный синтаксис (в данном случае я не люблю), вы можете использовать:
context.Items
.Where(i => i.Value > 50)
.ToList()
.ForEach(item => context.Items.DeleteObject(item));
В foreach, когда Коллекция изменяется, вы получаете исключение.
Решение: Скопируйте свою коллекцию.
context.Items.Where( i => i.Value > 50 ).ToList().ForEach(item => context.Items.Remove(item));