Gibt es eine Möglichkeit, IComparer mit ArrayList.Sort() zu verwenden, um eine Gruppe von Strings als Ints zu sortieren?Sortieren von String-Arrays als Int
1
A
Antwort
6
Sicher. Erstellen Sie einfach den entsprechenden Vergleich, der die Konvertierung durchführt.
public class StringAsIntComparer : IComparer {
public int Compare(object l, object r) {
int left = Int32.Parse((string)l);
int right = Int32.Parse((string)r);
return left.CompareTo(right);
}
+0
Das war was ich antworten wollte! –
7
Wenn sie alle Zeichenfolgen sind, warum verwenden Sie eine ArrayList? Wenn Sie auf .Net 2.0 oder höher sind, ist List<string>
eine viel bessere Wahl.
Wenn Sie auf .Net 3.5 oder höher:
var result = MyList.OrderBy(o => int.Parse(o.ToString())).ToList();
1
eine leichte Variation basierend auf Joels Lösung
string[] strNums = {"111","32","33","545","1","" ,"23",null};
var nums = strNums.Where(s =>
{
int result;
return !string.IsNullOrEmpty(s) && int.TryParse(s,out result);
}
)
.Select(s => int.Parse(s))
.OrderBy(n => n);
foreach(int num in nums)
{
Console.WriteLine(num);
}
Haben Sie Strings bedeuten wie "1", "55"? – weiqure