У меня этот код:Почему он не перебирает все элементы IEnumerable?
public static void myMethodMytype paramObject, IEnumerable<MyType> paramObjects)
{
IEnumerable<Mytype> ieFilteredObjects = paramObjects.Where(x=>x.IDType == paramObject.IDType);
if (ieFilteredObjects.Count() == 2)
{
foreach (MyType iterator in ieFilteredObjects)
{
iterator.MyProperty = null;
}
}
}
В этом случае ieFilteredObjects имеет 2 элемента, но в Еогеаспе, обновлять только первый элемент, а выход из Еогеаспа.
Если в Еогеасп я использую это:
foreach (MyType iterator in ieFilteredObjects.ToList())
затем он работает, как ожидалось.
Почему мне нужно преобразовать IEnumerable в список?
Спасибо.
Ваш явно неправильный код и правильный код должны функционировать одинаково (разрешить повторение перечисления). Причина отказа, на мой взгляд, не показана в коде, который вы представили. –
Счет вашего запроса может изменяться между вашим методом 'Count()' и 'GetEnumerator' внутри foreach, поскольку он выполняет предложение' Where' каждый раз, когда вы повторяете. «paramObjects» мутируется вне метода? –