Я следующий код:разделить список, используя LINQ
var e = someList.GetEnumerator();
var a = new List<Foo>();
var b = new List<Foo>();
while(e.MoveNext()) {
if(CheckCondition(e.Current)) {
b.Add(e.Current);
break;
}
a.Add(e.Current);
}
while(e.MoveNext())
b.Add(e.Current)
Это выглядит некрасиво. В принципе, итерации по списку и добавление элементов в один список до тех пор, пока не произойдет какое-то условие, и добавьте остальные в другой список.
Есть ли лучший способ, например. используя linq? CheckCondition() стоит дорого, и списки могут быть огромными, поэтому я бы предпочел не делать ничего, что повторяет списки дважды.
Я понимаю ваш код, но 'если (e.Current)' не имеет смысла. Я думаю, вы ищете, чтобы сохранить значение последнего вызова MoveNext (из первого цикла) и проверить, успешно ли он. – Ani
Обновлено, чтобы иметь больше смысла (т. Е. Добавить e.Current к 'b' после проверки CheckCondition, а не обрабатывать этот элемент за пределами цикла – Anonym
Да, теперь ясно. – Ani