2011-01-14 11 views

Antwort

6

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.

+0

ok, aber was ist "s"? – aharon

+0

@aharon: Es ist der Parameter des Lambda-Ausdrucks. Wenn du LINQ lernen willst, musst du etwas über verschiedene Funktionen von C# 3 lernen. –

+0

Nit: du übergibst kein 'Prädikat ' in OrderBy - du übergibst eine 'Func '. –

2

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.

2

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.

0

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.

+0

welcher Typ ist unsortiert? Ich habe es mit string [] versucht, funktioniert nicht ...? – BerggreenDK

+0

string [] test = neu [] {"3", "1", "c"}; sollte ohne Probleme funktionieren. Sie müssen den Namespace System.Linq einschließen – hwcverwe

Verwandte Themen