我在网上得分低,我找不到简单的答案。
我想在List<T>.Sort()
返回什么?是索引还是转移(像Java一样)
我的代码:
newUsers.Sort((userB, userA) => {
// User pos -1 means they have no pos.
if (userA.pos == -1 && userB.pos == -1) {
return 0;
}
if (userA.pos == -1) {
return -1;
}
if (userB.pos == -1) {
return 1;
}
if (userA.pos < userB.pos) {
return 1;
} else {
return -1;
}
}
);
答案 0 :(得分:3)
从Comparison Delegate的MSDN doc返回System.Int32:
public delegate int Comparison<in T>(
T x,
T y
)
有符号整数,表示x和y的相对值,如下表所示。
Value | Meaning
--------------------------------------
Less than 0 | x is less than y.
0 | x equals y.
Greater than 0 | x is greater than y.
在您无关紧要的情况下,如果您不确定该怎么做,并且因为您只比较了pos
,那么您可以使用:
newUsers.Sort((userA, userB) => {
userA.pos.CompareTo(userB.pos);
}
);
这将为你完成整个工作。
答案 1 :(得分:2)
您有3个选择:
示例:
int x1 = 1;
int x2 = 2;
int res1 = Comparer<int>.Default.Compare(x1,x2); //-1 (1<2)
int res2 = Comparer<int>.Default.Compare(x2, x1); //1 (2>1)
int res3 = Comparer<int>.Default.Compare(x1, x1); //0 (1=1)
您可以使用任何其他值-1
(或任何正值< 0
而不是> 0
)而不是1
,但结果相同 - 但这三个值是常用。
根据此值,Sort()
方法会排列列表的排序顺序。