Heim >Datenbank >MySQL-Tutorial >Wie kann LINQ zur Berechnung des kartesischen Produkts mehrerer Mengen verwendet werden?
Die kartesische Produktoperation kombiniert mehrere Mengen, um eine neue Menge zu erstellen, die alle möglichen Kombinationen von Elementen in den Eingabemengen enthält.
Um eine kartesische Produktoperation an einer bereitgestellten Klassenstruktur durchzuführen (wobei eine Person mehrere Hunde und jeder Hund mehrere Welpen hat), kann LINQ effektiv genutzt werden.
Erstellen Sie zunächst eine kartesische Produktfunktion, die mehrere Mengen als Eingabe verwendet:
<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>
Anschließend wenden Sie die Funktion auf die Welpengruppe jedes Hundes an:
<code>var puppyCombinations = CartesianProduct( from dog in person.Dogs select dog.Puppies );</code>
Dadurch wird eine Folge von Sequenzen generiert, wobei jede interne Sequenz eine Kombination aus einem Welpen von jedem Hund darstellt. Die resultierende Kombination kann je nach Bedarf abgerufen und verarbeitet werden. (Der Code hier wurde leicht angepasst, um die Lesbarkeit und potenzielle Effizienz zu verbessern, abhängig von der Implementierung der CartesianProduct
-Funktion.)
Hinweis: Die Implementierung der oben genannten CartesianProduct
-Funktion muss möglicherweise weiter verbessert werden, um leere Sammlungen oder andere Randfälle zu verarbeiten und ihre Robustheit und Effizienz sicherzustellen. Eine sauberere, leichter verständliche rekursive Implementierung könnte besser geeignet sein.
Das obige ist der detaillierte Inhalt vonWie kann LINQ zur Berechnung des kartesischen Produkts mehrerer Mengen verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!