Antwort
Um alle möglichen Kombinationen mit LINQ zu generieren, können wir Technologie namens "Descartes" verwenden. Dieser Prozess beinhaltet das Erstellen einer Sequenz, die jede mögliche Elementkombination aus mehreren Eingabesequenzen enthält.Der folgende Code definiert eine Erweiterungsmethode
CartesianProduct
Zeichenfolge Kombination
static 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 }) ); }
CartesianProduct
In diesem Beispiel enthält die Variable
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(i => i.ToString())) select cpLine.Zip(arr1, (x1, x2) => x2 + "(" + x1 + ")");
Ausgangskombination
result
Ausgabekombinationen, die in der Beschreibung der Frage angegeben sind, können wir einen einfachen Zyklus verwenden:
Diese wiedergegebene Antwort verbessert die Code -Klarheit und adressiert die Berechtigungsanweisung im Format "A (i) B (j)".
Das obige ist der detaillierte Inhalt vonWie generiere ich alle möglichen Kombinationen von Zeichen und Ganzzahlen aus zwei Arrays mit LINQ?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!