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

C# 按指定的整数值对对象数组进行排序,c#,arrays,sorting,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 我正在尝试对这些对象进行排序,以便具有更高整数值的对象在列表中显示得更远,但我将通过排

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

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);
注意:在代码中,
指的是对象中的整数值

我做错了什么?

更换

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


传递给
Array.Sort
的第二个参数是
IComparer
。从文件中:

返回值类型:System.Int32指示 x和y的相对值,如下表所示

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

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

您的委托应返回0、1或-1。尝试使用
(x,y)=>xPoint.CompareTo(y.Point)
我会警告不要使用
y.Point-x.Point
作为返回值。Integer overflow在奇怪的地方竖起丑陋的脑袋,导致一些难以找到的bug。我建议改为
y.CompareTo(x)
。如果将相等项视为较大(或较小)项,则某些排序算法将进入无限循环。奇怪的是,他们认为如果将x与y进行比较返回1,那么将y与x进行比较将返回-1。如果不是这样,坏事就会发生。
Array.Sort(sortedArray, (x, y) => y.Point - x.Point);