有没有办法使用IComparer和ArrayList.Sort()将一组字符串排序为整数?
答案 0 :(得分:8)
如果它们都是字符串,为什么使用ArrayList?如果您使用的是.Net 2.0或更高版本,List<string>
是很多更好的选择。
如果您使用.Net 3.5或更高版本:
var result = MyList.OrderBy(o => int.Parse(o.ToString() ) ).ToList();
答案 1 :(得分: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);
}
答案 2 :(得分: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);
}