2009-07-24 11 views
1

ArrayList.Sort()でIComparerを使用して、文字列のグループをintとしてソートする方法はありますか?文字列配列をIntとしてソート

+2

に基づいて若干の変動あなたは "1"、 "55" のような文字列を意味していますか? – weiqure

答えて

6

変換を行う適切な比較演算子を作成するだけです。

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

それは私が答えようとしていたものです! –

7

すべてが文字列の場合、なぜArrayListを使用していますか? .Net 2.0以降をご利用の場合は、List<string>、それ以上はをお選びください。

は、.NET 3.5以降にしている場合:

var result = MyList.OrderBy(o => int.Parse(o.ToString())).ToList(); 
1

ジョエルのソリューション

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); 
    } 
関連する問題