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
Patricia Arquetteoriginal
2025-01-04 03:49:39701parcourir

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);

É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);

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);
    }
}

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

var lastNElements = collection.TakeLast(5);

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!

Déclaration:
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