2009-07-24 6 views

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); 
    } 
Verwandte Themen