Maison >base de données >tutoriel mysql >Comment LINQ peut-il être utilisé pour calculer le produit cartésien de plusieurs ensembles ?
L'opération produit cartésien combine plusieurs ensembles pour créer un nouvel ensemble contenant toutes les combinaisons possibles d'éléments dans les ensembles d'entrée.
Pour effectuer une opération de produit cartésien sur une structure de classe fournie (où une personne a plusieurs chiens et chaque chien a plusieurs chiots), LINQ peut être exploité efficacement.
Tout d'abord, créez une fonction produit cartésienne qui prend plusieurs ensembles en entrée :
<code>public static IEnumerable<IEnumerable<T>> CartesianProduct<T>(params IEnumerable<T>[] sets) { if (sets.Length == 0) { return new[] { Enumerable.Empty<T>() }; } return sets[0].SelectMany(x => sets.Skip(1).Aggregate( new[] { x }, (acc, set) => CartesianProduct(acc, set) // 修正此处 )); }</code>
Ensuite, appliquez la fonction à l'ensemble des chiots de chaque chien :
<code>var puppyCombinations = CartesianProduct( from dog in person.Dogs select dog.Puppies );</code>
Cela générera une séquence de séquences, où chaque séquence interne représente une combinaison d'un chiot de chaque chien. La combinaison résultante peut être consultée et traitée en fonction des besoins. (Le code ici a été légèrement ajusté pour améliorer la lisibilité et l'efficacité potentielle, en fonction de l'implémentation de la fonction CartesianProduct
.)
Remarque : L'implémentation de la CartesianProduct
fonction ci-dessus peut nécessiter des améliorations supplémentaires pour gérer les collections vides ou d'autres cas extrêmes afin de garantir sa robustesse et son efficacité. Une implémentation récursive plus propre et plus facile à comprendre pourrait être plus appropriée.
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!