Я перенесла свое приложение MVC из linq-to-Sql в EF 6.1.1 и из .Net Framework 4.0 в 4.5.1. Я использовал следующие для удаления элементов из списка:.Net Framework 4.5.1 RemoveAt
List<int> idsToKeep = new List<int>();
for (int i = 0; i < visit.Client.Count; i++)
{
Client om = visit.Client[i];
if (om.ClientId == 0)
continue;
bool itemExists = false;
foreach (int id in idsToKeep)
if (om.ClientId == id)
itemExists = true;
if (!itemExists)
{
visit.Client.RemoveAt(i);
i--;
}
}
return errors;
}
Первоначально я получил эту ошибку:
cannot apply indexing with to an expression of type system.collections.generic.iCollection
в этой строке:
Client om = visit.Client[i];
изменил его:
Client om = visit.Client.ElementAt(i);
Я не уверен, что это правильно, howev er не получил никакой ошибки; проблема в том, что я не могу решить RemoveAt в этой строке:
visit.Client.RemoveAt(i);
Оценил ваши предложения
Вы не должны изменять коллекцию, которую вы итерируете. –
Клиент является 'Collection', а не' IList '. Нет массива, поэтому нет понятия позиции индекса. –
Отформатируйте свой код –