Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von LINQ effizient die letzten N Elemente einer Sammlung abrufen?

Wie kann ich mithilfe von LINQ effizient die letzten N Elemente einer Sammlung abrufen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-05 04:21:38522Durchsuche

How to Efficiently Get the Last N Elements of a Collection Using LINQ?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn