Donnez deux arrays, array1 et array2. Par exemple, étant donné:
array1: {a, b, c}
Ce processus nous oblige à obtenir le fragment de la séquence de ces deux tableaux. Linq fournit un moyen direct de générer ce descartes:
<code> a1 b1 c1 a1 b1 c2 a1 b1 c3 a1 b1 c4 a1 b2 c1 a1 b2 c2 a1 b2 c3 a1 b2 c4 a2 b1 c1 a2 b1 c2 a2 b1 c3 a2 b1 c4 a2 b2 c1 a2 b2 c2 a2 b2 c3 a2 b2 c4 a3 b1 c1 a3 b1 c2 a3 b1 c3 a3 b1 c4 a3 b2 c1 a3 b2 c2 a3 b2 c3 a3 b2 c4 (最后一行)</code>
Cette méthode obtient la séquence de la séquence et utilise l'opérateur d'agrégat pour accumuler l'accumulation de Descartes. Il commence par une séquence vide en tant que cumulateur et le combine à plusieurs reprises avec chaque séquence dans la séquence d'entrée. Pour chaque combinaison, il comprime les éléments du cumulateur et les éléments de la séquence actuelle pour générer l'accumulation de hydrochlar.
Données compresséesstatic IEnumerable<IEnumerable<T>> CartesianProduct<T>(this IEnumerable<IEnumerable<T>> sequences) { IEnumerable<IEnumerable<T>> emptyProduct = new[] { Enumerable.Empty<T>() }; return sequences.Aggregate( emptyProduct, (accumulator, sequence) => from accseq in accumulator from item in sequence select accseq.Concat(new[] { item }) ); }
Une fois que nous avons l'accumulation de Descartes, nous pouvons comprimer les éléments du premier tableau et l'élément correspondant dans le deuxième tableau du deuxième tableau:
La méthode CartesianProduct nous permet de générer facilement les descartes de plusieurs séquences. Nous créons une séquence d'une séquence en générant une plage entière pour chaque élément du deuxième tableau, puis nous compressons cette gamme de Descartes avec le premier tableau pour créer la combinaison requise.
Enfin, nous pouvons traverser la séquence de la séquence de la séquence et imprimer chaque ligne:
var arr1 = new[] { "a", "b", "c" }; var arr2 = new[] { 3, 2, 4 }; var result = from cpLine in CartesianProduct( from count in arr2 select Enumerable.Range(1, count)) select cpLine.Zip(arr1, (x1, x2) => x2 + x1);
Ce code générera une combinaison en tant que chaîne et l'imprimera à la console.
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!