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

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

Patricia Arquette
Libérer: 2025-01-03 04:04:38
original
753 Les gens l'ont consulté

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

Récupération des N derniers éléments d'une collection à l'aide de LINQ

Dans LINQ, l'obtention des N derniers éléments d'une collection peut être obtenue avec une combinaison des méthodes Skip() et Count(). La méthode Skip() permet de sauter un nombre spécifié d'éléments depuis le début d'une collection, tandis que Count() renvoie le nombre total d'éléments dans la collection.

Pour obtenir les N derniers éléments, on peut déterminez le nombre total de la collection et soustrayez-en N. La valeur résultante est ensuite transmise à Skip() pour ignorer les premiers (nombre - N) éléments, ne laissant que les N derniers éléments. Cela peut être exprimé comme suit :

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

Cette approche permet effectivement de préserver l'ordre des éléments sans nécessiter de tri. Il garantit également la compatibilité entre plusieurs fournisseurs LINQ.

Implémentation de la méthode d'extension

Voici une implémentation de méthode d'extension pour TakeLast(int N) qui utilise l'approche ci-dessus :

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

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

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

Considérations sur les performances

Bien que cette approche soit généralement efficace, il convient de considérer l'impact de l'appel de Count() sur certaines structures de données. Dans certains cas, cela peut entraîner l’énumération de l’intégralité de la structure de données. Les performances peuvent être encore optimisées dans les situations où un énumérable en avant uniquement est requis et où plusieurs transmissions sur les données doivent être évitées. Des algorithmes alternatifs en un seul passage qui utilisent des tampons temporaires peuvent être utilisés dans de tels cas.

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