自定义排序功能不起作用

时间:2016-03-04 21:48:58

标签: c# sorting

我已经为列表实现了自定义排序功能。但在调用之后,列表的顺序似乎没有改变。

我想找到所有数字组合中最大的数字。例如,给540,9,它应该输出9540而不是5409.所以比较函数完成这项工作。

    public void LargestPossibleNumberCombination(List<int> nums) {
        nums.Sort(CustomCompare);

    }
    public int CustomCompare(int x, int y)
    {
        string a = x +""+ y;
        string b = y + "" + x;
        return a.CompareTo(b) > 0 ? 0 : 1;
    }

1 个答案:

答案 0 :(得分:1)

x小于y(&lt; 0),y小于x(&gt; 0)时,您需要返回值等于(0)。

但是,您可以使用lambda比较使这种类型更紧凑:

nums.Sort((x, y) => string.Compare(string.Format("{0}{1}", y, x), 
                                   string.Format("{0}{1}", x, y)));

如果要在排序后加入列表:

var result = string.Join("", nums);