Abrufen der letzten N Elemente einer Sammlung mit LINQ
Linq bietet verschiedene Operatoren zum Bearbeiten und Abfragen von Objektsammlungen. Eine häufige Anforderung besteht darin, die letzten N Elemente aus einer Sammlung abzurufen. Dies kann durch eine Kombination von LINQ-Operatoren erreicht werden.
Nehmen wir an, wir haben eine Sammlung von Elementen. Um die letzten N Elemente zu erhalten, können wir die folgenden Schritte verwenden:
Schritt 1: Bestimmen Sie den Startindex:
Wir müssen den Startindex in der Sammlung berechnen wo die letzten N Elemente beginnen. Dies wird erreicht, indem die gewünschte Anzahl an Elementen von der Gesamtzahl der Elemente in der Sammlung abgezogen wird.
int startIndex = Math.Max(0, collection.Count() - N);
Schritt 2: Zum Startindex springen:
Mit dem „Skip“-Operator bewegen wir uns über den startIndex hinaus und wählen die verbleibenden Elemente im aus Sammlung.
var lastNElements = collection.Skip(startIndex);
Ansatz der Erweiterungsmethode:
Wenn es keinen integrierten Operator zum Abrufen der letzten N Elemente gibt, können wir eine Erweiterungsmethode erstellen um diesen Prozess zu vereinfachen. Die Erweiterungsmethode würde die IEnumerable-Schnittstelle erweitern und eine „TakeLast“-Methode bereitstellen.
public static class MiscExtensions { public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N) { // Determine the starting index int startIndex = Math.Max(0, source.Count() - N); // Skip to the starting index and select remaining elements return source.Skip(startIndex); } }
Diese Erweiterungsmethode kann jetzt wie folgt verwendet werden:
var lastNElements = collection.TakeLast(5);
Überlegungen zur Leistung:
Der Aufruf von „Count()“ kann zur Aufzählung bestimmter Datenstrukturen führen, was zu zwei Durchläufen der Daten führt. Um zwei Durchgänge zu vermeiden, sollten Sie bei Vorwärtsaufzählungen die Verwendung eines temporären Puffers zum Speichern von Elementen während der Aufzählung in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit LINQ die letzten N Elemente aus einer Sammlung abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!