So rufen Sie die letzten N Elemente einer Sammlung mit LINQ ab
Um die letzten N Elemente einer Sammlung abzurufen, bietet LINQ die effizienteste Lösung Skip()-Methode. Durch die Kombination mit einer bedingten Anweisung über Math.Max() können wir Fehler aufgrund negativer Eingaben vermeiden.
collection.Skip(Math.Max(0, collection.Count() - N));
Dieser Ansatz behält die ursprüngliche Elementreihenfolge bei, ohne auf Sortieren zurückgreifen zu müssen, und ist mit mehreren LINQ-Anbietern kompatibel .
Für mehr Flexibilität kapselt die bereitgestellte Erweiterungsmethode das oben Genannte Logik:
public static class MiscExtensions { public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N) { return source.Skip(Math.Max(0, source.Count() - N)); } }
Verwendung:
collection.TakeLast(5);
Während der Count()-Aufruf eine Aufzählung für bestimmte Datenstrukturen erfordert, gibt es Optimierungen für gängige Strukturen wie Listen und Arrays. Bei Nur-Vorwärts-Aufzählungen vermeiden alternative One-Pass-Algorithmen (z. B. von Lasse V. Karlsen oder Mark Byers) mehrere Durchgänge über die Daten.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von LINQ effizient die letzten N Elemente einer Sammlung abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!