LINQ Aggregate démystifié : un guide étape par étape
La fonction Aggregate de LINQ peut souvent être une source de confusion. Dans cet article, nous allons plonger dans le fonctionnement interne d'Aggregate et fournir des explications claires et concises avec des exemples concrets.
Comprendre Aggregate
Aggregate est une opération qui parcourt une séquence d'éléments, en appliquant une fonction spécifiée (expression lambda) à chaque élément et au résultat précédemment accumulé. Il effectue essentiellement des opérations consécutives sur les éléments, faisant avancer les résultats intermédiaires.
Exemple 1 : Addition de nombres
Commençons par un exemple simple de sommation d'une liste de nombres :
var nums = new[] { 1, 2, 3, 4 }; var sum = nums.Aggregate((a, b) => a + b); Console.WriteLine(sum); // Output: 10
Dans cet exemple, la fonction Aggregate initialise un résultat avec le premier élément (1). Il applique ensuite l'expression lambda (a b) au résultat actuel (1) et à l'élément suivant (2), ce qui donne 3. Ce processus se poursuit, en ajoutant chaque élément au résultat précédent.
Exemple 2 : Création d'un CSV à partir de chaînes
L'agrégat peut également être utilisé pour la manipulation de chaînes. Voici comment créer une chaîne séparée par des virgules à partir d'un tableau de caractères :
var chars = new[] { "a", "b", "c", "d" }; var csv = chars.Aggregate((a, b) => a + "," + b); Console.WriteLine(csv); // Output: a,b,c,d
Exemple 3 : Multiplier des nombres avec une graine
Aggregate prend en charge une surcharge qui prend une valeur de départ initiale pour lancer les calculs. Prenons l'exemple suivant :
var multipliers = new[] { 10, 20, 30, 40 }; var multiplied = multipliers.Aggregate(5, (a, b) => a * b); Console.WriteLine(multiplied); // Output: 1200000
Dans ce cas, l'opération d'agrégation commence par la valeur de départ (5) et applique l'expression lambda de multiplication (a * b). Chaque élément de la séquence est multiplié par le résultat précédent et reporté, produisant le résultat final de 1 200 000.
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!