¿Puedo dividir un IEnumerable<T>
en dos IEnumerable<T>
usando LINQ y solo una sola consulta/instrucción LINQ?¿Puedo dividir un IEnumerable en dos por un criterio booleano sin dos consultas?
Quiero evitar repetir el IEnumerable<T>
dos veces. Por ejemplo, ¿es posible combinar las dos últimas declaraciones a continuación, de modo que todos los valores solo se recorren una vez?
IEnumerable<MyObj> allValues = ...
List<MyObj> trues = allValues.Where(val => val.SomeProp).ToList();
List<MyObj> falses = allValues.Where(val => !val.SomeProp).ToList();
elegante! Siempre puedo usar groups.ContainsKey() o groups.TryGetValue() para manejar el caso donde falta la clave. – SFun28
Esto falla si una clave (verdadera o falsa) nunca se usa. p.ej. si SomeProp es siempre verdadero, los grupos [falso] se bloquearán con Exception "La clave dada no estaba presente en el diccionario" – buffjape
GroupBy use sorting para hacer grupos. No sé si es mejor seguir con el escaneo iterativo dos veces que hacer una especie de prueba. – ejmarino