Maison >développement back-end >C++ >Comment LINQ peut-il être utilisé pour générer efficacement des produits cartésiens d'ensembles de chiots ?
Génération de produits cartésiens d'ensembles de chiots à l'aide de LINQ
LINQ propose une solution élégante pour créer des produits cartésiens, reflétant les fonctionnalités de SQL. Illustrons cela avec un scénario impliquant des personnes, leurs chiens et les chiots de chaque chien. L'objectif est de générer toutes les combinaisons possibles de chiots, en sélectionnant un chiot parmi chaque chien appartenant à une personne.
Nombre connu d'ensembles
Si le nombre de sets de chiens (et donc de sets de chiots) est prédéterminé, une simple requête LINQ suffit :
<code class="language-csharp">from p1 in dog1.Puppies from p2 in dog2.Puppies from p3 in dog3.Puppies select new { p1, p2, p3 };</code>
Cette requête produit toutes les combinaisons de chiots, un de chacun des dog1
, dog2
et dog3
.
Nombre inconnu d'ensembles
La gestion d'un nombre inconnu de groupes de chiens nécessite une approche plus flexible :
CartesianProduct<T>
Méthode : Une méthode récursive CartesianProduct<T>
est créée. Cette méthode accepte une séquence de IEnumerable<T>
représentant les ensembles de chiots.
Implémentation récursive : La méthode CartesianProduct<T>
génère de manière récursive toutes les combinaisons possibles à partir des séquences d'entrée.
En utilisant cette méthode, le produit cartésien est obtenu de manière concise :
<code class="language-csharp">CartesianProduct(from dog in person.Dogs select dog.Puppies);</code>
Cette ligne unique génère toutes les combinaisons possibles de chiots, garantissant qu'un chiot est sélectionné parmi chaque chien appartenant à la personne.
Cette approche basée sur LINQ, tirant parti des opérations sur les ensembles et de la récursion, génère efficacement des produits cartésiens quel que soit le nombre d'ensembles d'entrées, offrant ainsi une solution puissante et adaptable.
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!