Heim >Datenbank >MySQL-Tutorial >Wie kann LINQ zur Berechnung des kartesischen Produkts mehrerer Mengen verwendet werden?

Wie kann LINQ zur Berechnung des kartesischen Produkts mehrerer Mengen verwendet werden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 07:01:09210Durchsuche

How Can LINQ Be Used to Calculate the Cartesian Product of Multiple Sets?

Kartesisches Produkt mit LINQ finden

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn