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
Freigeben: 2025-01-05 04:21:38
Original
464 Leute haben es durchsucht

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));
Nach dem Login kopieren

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));
    }
}
Nach dem Login kopieren

Verwendung:

collection.TakeLast(5);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage