Maison > développement back-end > C++ > Comment puis-je récupérer les N derniers éléments d'une collection à l'aide de LINQ ?

Comment puis-je récupérer les N derniers éléments d'une collection à l'aide de LINQ ?

Patricia Arquette
Libérer: 2025-01-04 03:49:39
original
677 Les gens l'ont consulté

How Can I Retrieve the Last N Elements from a Collection Using LINQ?

Récupération des N derniers éléments d'une collection avec LINQ

Linq fournit divers opérateurs pour manipuler et interroger des collections d'objets. Une exigence courante consiste à obtenir les N derniers éléments d’une collection. Ceci peut être réalisé grâce à une combinaison d'opérateurs LINQ.

Supposons que nous ayons une collection d'éléments. Pour obtenir les N derniers éléments, nous pouvons utiliser les étapes suivantes :

Étape 1 : Déterminer l'indice de départ :

Nous devons calculer l'indice de départ dans la collection où commencent les N derniers éléments. Ceci est obtenu en soustrayant le nombre d'éléments souhaité du nombre total d'éléments de la collection.

int startIndex = Math.Max(0, collection.Count() - N);
Copier après la connexion

Étape 2 : passer à l'index de départ :

À l'aide de l'opérateur 'Skip', nous dépassons le startIndex et sélectionnons les éléments restants dans le collection.

var lastNElements = collection.Skip(startIndex);
Copier après la connexion

Approche de la méthode d'extension :

S'il n'y a pas d'opérateur intégré pour obtenir les N derniers éléments, nous pouvons créer une méthode d'extension pour simplifier ce processus. La méthode d'extension étendrait l'interface IEnumerable et fournirait une méthode « TakeLast ».

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);
    }
}
Copier après la connexion

Cette méthode d'extension peut désormais être utilisée comme suit :

var lastNElements = collection.TakeLast(5);
Copier après la connexion

Considérations relatives aux performances :

L'appel de 'Count()' peut provoquer l'énumération de certaines structures de données, entraînant deux passages sur les données. Pour que les énumérables avant uniquement évitent deux passes, envisagez d'utiliser un tampon temporaire pour stocker les éléments pendant l'énumération.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal