Wie sortiere ich ein gezacktes Array von einem Array? [Duplikat]
var jaggedarray = new int[3][];
jaggedarray[0] = new int[5] { 99, 999, 49, 79, 59 };
jaggedarray[1] = new int[3] { 199, 1999, 149 };
jaggedarray[2] = new int[2] { 999, 500 };
Von diesem gezackten Array möchte ich, dass die Zeilen nach einem anderen Array sortiert werden1D (kann eine Ganzzahl oder eine Zeichenfolge sein ).
Natürlich entspricht die Anzahl der Zeilen im gezackten Array der Anzahl der Elemente in Array1D, zum Beispiel:
Beispiel
object[] array1D= {12,7,3}
Bearbeiten: Die Anzahl der Elemente und Datentypen im gezackten Array ist zufällig. Ich muss nach den neuen Positionen nach dem Sortieren aus Array1D suchen und basierend auf diesen neuen Positionen nach dem gezackten Array sortieren.
Basierend auf den von array1D bestellten Ergebnissen lautet mein gewünschtes Ergebnis für ein gezacktes Array nach dem Sortieren:
jaggedarray[0] =new int[2] { 999, 500 };
jaggedarray[1] = new int[3] { 199, 1999, 149 };
jaggedarray[2] = new int[5] { 99, 999, 49, 79, 59 };
Ich habe nach Artikeln über gezackte Arrays gesucht, aber die meisten erwähnen die Spaltensortierung.
Wie kann ich ein gezacktes Array von einem anderen Array sortieren?
Antworten
Wenn ich die Frage richtig verstehe, können Sie ZipIhre 2 Array-Sets zusammenfügen, dann OrderByfür die Elemente im 1D-Array das ursprüngliche Array Select( projektieren ) und dann ToArrayzu Ihrem gezackten Array zurückkehren
object[] array1D = {12, 7, 3};
var results = jaggedarray
.Zip(array1D, (ints, objects) => (ints, objects))
.OrderBy(x => x.objects)
.Select(x => x.ints)
.ToArray();
foreach (var result in results)
Console.WriteLine(string.Join(", ", result));
Ausgabe
999, 500
199, 1999, 149
99, 999, 49, 79, 59
Update oder peinlich (für mich) verwenden Array.Sort():)