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

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

Linda Hamilton
Freigeben: 2025-01-03 03:27:39
Original
857 Leute haben es durchsucht

How Can LINQ Efficiently Retrieve the Last N Elements of a Collection?

Abrufen der letzten N Elemente in einer Sammlung mit LINQ

Das Verständnis des Endes einer Sammlung ist eine häufige Anforderung in verschiedenen Programmierszenarien. In diesem Artikel werden wir untersuchen, wie LINQ uns dabei unterstützen kann, die letzten N Elemente einer Sammlung effektiv zu extrahieren.

Obwohl das Framework keine dedizierte Methode für diese genaue Aufgabe bereitstellt, können wir die Leistungsfähigkeit von nutzen LINQ, um eine elegante Erweiterungsmethode zu erstellen, die unser Ziel erreicht. Das folgende Code-Snippet demonstriert diese Erweiterungsmethode:

collection.Skip(Math.Max(0, collection.Count() - N));
Nach dem Login kopieren

Dieser Ansatz bietet mehrere wichtige Vorteile:

  • Behält die Reihenfolge der Elemente bei:Die ursprüngliche Reihenfolge wird beibehalten Elemente in der Sammlung, ohne auf Sortierung angewiesen zu sein.
  • Kompatibilität: Es ist kompatibel mit einer breiten Palette von LINQ-Anbietern, um plattformübergreifende Konsistenz sicherzustellen.

Es ist wichtig, Skip nicht mit einer negativen Zahl aufzurufen, da einige Anbieter (z. B. Entity Framework) möglicherweise eine ArgumentException auslösen. Der Math.Max-Aufruf schützt vor diesem Problem.

Der Einfachheit halber können wir die Erweiterungsmethode in eine separate Klasse packen:

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

Mit dieser Erweiterungsmethode können wir das letzte N abrufen Elemente einer beliebigen Aufzählung unter Verwendung einer prägnanten Syntax, wie zum Beispiel:

collection.TakeLast(5);
Nach dem Login kopieren

Obwohl dieser Ansatz im Allgemeinen performant ist, ist es wichtig, sich der potenziellen Leistung bewusst zu sein Implikationen. Der Aufruf von Count() kann für bestimmte Datenstrukturen mehrere Aufzählungen auslösen. Um dies zu vermeiden, ziehen Sie alternative One-Pass-Algorithmen (z. B. Pufferung) für Nur-Vorwärts-Aufzählungen in Betracht.

Das obige ist der detaillierte Inhalt vonWie kann LINQ die letzten N Elemente einer Sammlung effizient 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