2012-03-23 105 views
0

好吧,我打了很多这样的事情,并且已经到了可以对我的数组进行排序的地步。我现在需要做的是采取下面的代码,并按降序排列元素,而不是升序。我不知道怎么做,在代码中的两个参数:VB.NET排名基于排序的Excel列

Dim Cols(3) As Int16 
Cols(0) = ColumnNumber + 1 
Cols(1) = ColumnNumber + 2 
Cols(2) = ColumnNumber + 3 
Cols(3) = ColumnNumber + 4 

Dim Vals(3) As Double 
Vals(0) = xlsWorkSheet.Cells(r, ColumnNumber + 1).value 
Vals(1) = xlsWorkSheet.Cells(r, ColumnNumber + 2).value 
Vals(2) = xlsWorkSheet.Cells(r, ColumnNumber + 3).value 
Vals(3) = xlsWorkSheet.Cells(r, ColumnNumber + 4).value 

Array.Sort(Vals, Cols) 

回答

0

如果我正确理解你的问题,你可以通过反向排序结果实行按降序排序。

您应该能够提供反转排序顺序的IComparer实例。

Public Class myReverserClass 
    Implements IComparer 

    ' Calls CaseInsensitiveComparer.Compare with the parameters reversed. 
    Function Compare(x As [Object], y As [Object]) As Integer _ 
     Implements IComparer.Compare 
     Return New CaseInsensitiveComparer().Compare(y, x) 
    End Function 'IComparer.Compare 

End Class 'myReverserClass 

执行反向排序,像这样:

Dim myComparer = New myReverserClass() 
Array.Sort(Vals, Cols, myComparer) 

有做这个MSDN上的例子:http://msdn.microsoft.com/en-us/library/system.array.sort(v=vs.71).aspx