Мне нужно выполнить итерацию по List<myObject>
и удалить элементы, которые отвечают определенному условию.
Я увидел этот ответ (qaru.site/info/20956/...):
Итерируйте свой список в обратном порядке с помощью цикла for:
for (int i = safePendingList.Count - 1; i >= 0; i--) { // some code // safePendingList.RemoveAt(i); }
Пример:
var list = new List<int>(Enumerable.Range(1, 10)); for (int i = list.Count - 1; i >= 0; i--) { if (list[i] > 5) list.RemoveAt(i); } list.ForEach(i => Console.WriteLine(i));
Но я понял, что for
менее эффективен, чем foreach
,
Итак, я подумал о том, чтобы использовать следующее:
foreach (var item in myList.ToList())
{
// if certain condition applies:
myList.Remove(item)
}
Один метод лучше другого?
EDIT:
Я не хочу использовать RemoveAll(...)
, так как в цикле есть большое количество кода, до условия.