C#排序Lamba,返回什么?

C#排序Lamba,返回什么?,c#,C#,我在网上的得分又高又低,我找不到一个简单的答案 我应该在List.Sort()上返回什么?是索引还是移位(如Java) 我的代码: newUsers.Sort((userB, userA) => { // User pos -1 means they have no pos. if (userA.pos == -1 && userB.pos == -1) {

我在网上的得分又高又低,我找不到一个简单的答案

我应该在
List.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;
                    }
                }
            );
newUsers.Sort((userB,userA)=>{
//用户pos-1表示他们没有pos。
if(userA.pos=-1&&userB.pos=-1){
返回0;
}
如果(userA.pos==-1){
返回-1;
}
如果(userB.pos==-1){
返回1;
}
if(userA.pos
您有3种选择:

  • 左值比右值小:小于0
  • 左值大于右值:大于0
  • 值相等:0
例如:

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)
intx1=1;
int x2=2;
int res1=Comparer.Default.Compare(x1,x2)//-1 (11)
int res3=Comparer.Default.Compare(x1,x1)//0  (1=1)
除了
-1
,您还可以使用任何其他值
<0
(或任何正值
>0
,而不是
1
)获得相同的结果-但这三个值是常用的

根据该值,
Sort()
方法安排列表的排序顺序。

从is的MSDN文档返回一个System.Int32:

public delegate int Comparison<in T>(
    T x,
    T y
)

在您的小案例中,如果您不确定要做什么,并且因为您只比较了
pos
,您可以使用:

newUsers.Sort((userA, userB) => {
                userA.pos.CompareTo(userB.pos);
            }
        );

这将为您完成全部工作。

我想sort总是返回一个int@BugFinder他在问这个整数是什么意思。请阅读该方法的文档。它会告诉你如何正确地使用它。哦,我认为从代码上看这是相当明显的,当他问他应该返回什么时我想。。这不是索引不,这是它与其他索引的比较方式item@servy哪里看看这个:没有任何东西说明int应该是什么。但是这是哪个方向?@fubo然后作为一个例子,而不是说明该方法的错误用法。@iLoveUnicorns方向取决于
-1
1
0
。该值用于排列排序顺序。小于和大于表示列表上的移动?@iLoveUnicorns您在谈论哪些移动?
newUsers.Sort((userA, userB) => {
                userA.pos.CompareTo(userB.pos);
            }
        );