He el siguiente código:dividir una lista utilizando 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)
Esto se ve feo. Básicamente, itere a través de una lista y agregue elementos a una lista hasta que se active una condición, y agregue el resto a otra lista.
¿Hay alguna otra manera, por ejemplo,? usando linq? CheckCondition() es costoso, y las listas pueden ser enormes, por lo que preferiría no hacer nada que itere las listas dos veces.
entiendo su código, pero si '(e.Current)' no tiene sentido. Creo que está buscando almacenar el valor de la última llamada 'MoveNext' (desde el primer ciclo) y verificar si fue exitoso. – Ani
Actualizado para que tenga más sentido (es decir, agregue e.Actual a 'b' una vez que CheckCondition es verdadero, en lugar de manejar ese elemento fuera del ciclo – Anonym
Sí, está claro ahora. – Ani