Wie kann ich ein Array von Zeichenfolgen mithilfe der OrderBy
Funktion sortieren? Ich sah, dass ich einige Schnittstellen implementieren muss ...Sortieren eines Arrays von Zeichenfolgen in C#
Antwort
Sie können das Array mithilfe von sortieren.
var sortedstrings = myStringArray.OrderBy(s => s);
Dies wird eine Instanz von Ienumerable
zurück. Wenn Sie es als Array beibehalten müssen, verwenden Sie stattdessen diesen Code.
myStringArray = myStringArray.OrderBy(s => s).ToArray();
Ich bin mir nicht sicher, was Sie sich beziehen, wenn Sie gesagt, dass Sie einige Schnittstellen implementieren, aber Sie müssen dies nicht tun, wenn die IEnumerable.OrderBy
verwenden. Übergeben Sie einfach einen Func<TSource, TKey>
in Form eines Lambda-Ausdrucks.
OrderBy
wird das vorhandene Array nicht an Ort und Stelle sortieren. Wenn Sie dies tun müssen, verwenden Sie Array.Sort
.
OrderBy
gibt immer eine neue Sequenz - die natürlich Sie in ein Array umwandeln und speichern können einen Verweis auf in der ursprünglichen Variablen, wie pro Øyvind Antwort.
Um innerhalb eines vorhandenen Arrays zu sortieren, rufen Sie Array.Sort(theArray)
.
Kommentieren Sie die Schnittstellen: Sie müssen hier keine Schnittstellen hinzufügen, da string
gut unterstützt wird; aber für benutzerdefinierte Arten (eigene) können Sie IComparable
/IComparable<T>
implementieren, um das Sortieren zu ermöglichen. Sie können auch machen die gleiche Weitergabe in einem IComparer
/IComparer<T>
, wenn Sie wollen (oder müssen) den Code, der die Bestellung separat zu dem Typ selbst zur Verfügung stellt.
Linq bietet zwei (Syntax-) Möglichkeiten zum Sortieren eines Arrays von Strings.
1:
string[] sortedStrings = unsortedStrings.OrderBy(s => s).ToArray();
Diese Syntax ein Lambda Expressions mit, wenn Sie nicht wissen, s => s
Mittel, was.
2:
sortedStrings = (from strings in unsortedStrings
orderby strings
select strings).ToArray();
diesem Beispiel wird ein bisschen wie eine SQL-Anweisung aussieht und ist wahrscheinlich einfacher zu lesen, wenn Sie mit Linq neu sind.
ToArray()
wandelt die IOrderedEnumerable<string>
in diesem Fall in string[]
um.
welcher Typ ist unsortiert? Ich habe es mit string [] versucht, funktioniert nicht ...? – BerggreenDK
string [] test = neu [] {"3", "1", "c"}; sollte ohne Probleme funktionieren. Sie müssen den Namespace System.Linq einschließen – hwcverwe
- 1. Ändern eines Arrays von Zeichenfolgen in C
- 2. Sortieren eines Zeiger-Arrays.
- 3. Sortieren eines Arrays von Namen in Assembly
- 4. Arrays von Zeichenfolgen in verwaltet C++
- 5. Zufälliges Sortieren eines Arrays
- 6. Vergleichen von Zeichenfolgen und Arrays C#
- 7. Sortieren von Zeichenfolgen mit qsort
- 8. Sortierung eines Arrays von Strukturen in C
- 9. Sortieren eines gemeinsamen Arrays von Attributen
- 10. Sortieren eines 2D-Arrays mit Primärschlüssel
- 11. Sortieren einer Liste von Zeichenfolgen als Ganzzahlen in LINQ C#
- 12. Manuelles Sortieren eines Arrays in aufsteigender Reihenfolge
- 13. PHP - Sortieren eines Arrays von Dateinamen mit Zahlen?
- 14. C++ Schnelles Sortieren eines String-Arrays aus einer TXT-Datei
- 15. Sortieren ein Array von Arrays von verschiedenen Indizes in C
- 16. Sortieren eines String-Arrays nach einer String-Position (C#)
- 17. Sortieren eines Arrays von Objekten in ActionScript 3
- 18. Probleme beim Sortieren eines Arrays, json_encode
- 19. Ignorieren bestimmter Strings beim Sortieren eines Arrays
- 20. Umwandeln von Zeichenfolgen in konvertierbare JSON-Arrays
- 21. Sortieren nach Proxy (oder: Sortieren eines Containers durch den Inhalt eines anderen) in C++
- 22. Sortieren eines mehrdimensionalen Arrays nach mehreren Eigenschaften
- 23. Sortieren von parallelen Arrays in Java
- 24. Initialisierung eines Arrays von Strukturen in C#
- 25. PHP zum Sortieren eines Arrays enthält Speicherzeichenfolgen
- 26. Sortieren von Arrays aus einer Datei in C
- 27. Eingebaute Funktionen zum Sortieren von Arrays in C
- 28. Sortieren eines Arrays von Objekten durch zwei Doppel
- 29. Verwenden von Vorlagen zum Sortieren von Zeichenfolgen und Zeichen
- 30. Serialisierung eines Arrays in C#
ok, aber was ist "s"? – aharon
@aharon: Es ist der Parameter des Lambda-Ausdrucks. Wenn du LINQ lernen willst, musst du etwas über verschiedene Funktionen von C# 3 lernen. –
Nit: du übergibst kein 'Prädikat' in OrderBy - du übergibst eine 'Func '. –