Posso dividere uno IEnumerable<T>
in due IEnumerable<T>
utilizzando LINQ e solo una singola query/istruzione LINQ?Posso dividere un oggetto IEnumerable in due in base a un criterio booleano senza due query?
Desidero evitare di ripetere due volte lo IEnumerable<T>
. Ad esempio, è possibile combinare le ultime due istruzioni di seguito in modo che tutti i valori vengano solo attraversati una volta?
IEnumerable<MyObj> allValues = ...
List<MyObj> trues = allValues.Where(val => val.SomeProp).ToList();
List<MyObj> falses = allValues.Where(val => !val.SomeProp).ToList();
elegante! Posso sempre utilizzare groups.ContainsKey() o groups.TryGetValue() per gestire il caso in cui manca la chiave. – SFun28
Arresta in modo anomalo se una chiave (vera o falsa) non viene mai utilizzata. per esempio. se SomeProp è sempre true, i gruppi [false] si arrestano in modo anomalo con Eccezione "La chiave specificata non era presente nel dizionario" – buffjape
GroupBy utilizza l'ordinamento per creare gruppi. Non so se è meglio mantenere la scansione ripetibile due volte rispetto a una sorta di scansione. – ejmarino