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!