按指定的整数值对对象数组进行排序

时间:2016-09-27 06:03:29

标签: c# arrays sorting

我有一个包含以下数据的对象数组。

unsortedArray = 
A : 1
B : 2
C : 3
D : 4
E : 5
F : 6
G : 7
H : 8
I : 9
J : 10
K : 11
L : 12
M : 13
N : 14
O : 15
P : 16
Q : 17
R : 18
S : 19
T : 20
U : 21
V : 22
W : 23
X : 24
Y : 25
Z : 26

我试图对这些对象进行排序,以便具有较高整数值的对象在列表中显示得更远,但是我接收到以下排序的输出..

sortedArray = 
Z : 26
X : 24
W : 23
V : 22
U : 21
T : 20
S : 19
R : 18
Q : 17
P : 16
O : 15
N : 14
M : 13
L : 12
K : 11
J : 10
I : 9
H : 8
G : 7
F : 6
E : 5
D : 4
C : 3
B : 2
Y : 25
A : 1

以下是我正在使用的代码..

var sortedArray= unsortedArray;
Array.Sort(sortedArray, (x, y) => y.Point >= x.Point ? y.Point : x.Point);

注意:在代码中,Point指的是对象中的整数值。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

替换

100%

Array.Sort(sortedArray, (x, y) => y.Point >= x.Point ? y.Point : x.Point);

答案 1 :(得分:1)

您传递给Array.Sort的第二个参数是IComparer<T>。来自文档:

  

返回值类型:System.Int32一个带符号的整数,表示   x和y的相对值,如下表所示。

     

enter image description here

如果根据上表返回一个值并使用Sort,则数组将按升序排序,这与您想要的相反。这意味着如果x大于y,则应返回负值;如果x小于y,则应返回正值!

Array.Sort(sortedArray, (x, y) => y.Point - x.Point);