1

有没有办法使用 IComparer 和 ArrayList.Sort() 将一组字符串排序为整数?

4

3 回答 3

10

如果它们都是字符串,为什么要使用 ArrayList?如果您使用的是 .Net 2.0 或更高版本, List<string>这是一个更好的选择。

如果您使用的是 .Net 3.5 或更高版本:

var result = MyList.OrderBy(o => int.Parse(o.ToString() ) ).ToList();
于 2009-07-24T17:33:14.477 回答
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);
}
于 2009-07-24T17:32:34.087 回答
1

基于 Joel 解决方案的轻微变化

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);
    }
于 2009-07-25T18:28:08.540 回答