Kann ich eine IEnumerable<T>
in zwei IEnumerable<T>
mit LINQ und nur eine einzige Abfrage/LINQ-Anweisung teilen?Kann ich IEnumerable nach zwei Booleschen Kriterien ohne zwei Abfragen in zwei aufteilen?
Ich möchte vermeiden, zweimal durchlaufen die IEnumerable<T>
. Ist es zum Beispiel möglich, die letzten beiden Aussagen so zu kombinieren, dass allValues nur einmal durchlaufen wird?
IEnumerable<MyObj> allValues = ...
List<MyObj> trues = allValues.Where(val => val.SomeProp).ToList();
List<MyObj> falses = allValues.Where(val => !val.SomeProp).ToList();
elegant! Ich kann immer groups.ContainsKey() oder groups.TryGetValue() verwenden, um Fälle zu behandeln, in denen der Schlüssel fehlt. – SFun28
Dies stürzt ab, wenn ein Schlüssel (wahr oder falsch) nie verwendet wird. z.B. Wenn SomeProp immer wahr ist, stürzt groups [false] mit Exception ab. "Der angegebene Schlüssel war nicht im Wörterbuch vorhanden." – buffjape
GroupBy verwendet die Sortierung, um Gruppen zu erstellen. Ich weiß nicht, ob es besser ist, mit Scan zwei Mal iterierbar zu bleiben, als eine Art davon zu machen. – ejmarino