C#Sort,无法将lambda表达式转换为System.Array

C#Sort,无法将lambda表达式转换为System.Array,c#,lambda,C#,Lambda,根据我在.Sort()上的发现,这应该行得通 using System; using System.Linq; public class Test { public static void Main() { int[] test = new int[] {6, 2, 1, 4, 9, 3, 7}; test.Sort((a,b) => a<b); } } 这是我能找到的得到那个错误的最简单版本。在我的例子中,我取一个字符串,

根据我在.Sort()上的发现,这应该行得通

using System;
using System.Linq;

public class Test
{
    public static void Main()
    {
        int[] test = new int[] {6, 2, 1, 4, 9, 3, 7};
        test.Sort((a,b) => a<b);
    }
}
这是我能找到的得到那个错误的最简单版本。在我的例子中,我取一个字符串,给它一个复杂的排名值,然后比较它

我在这里遗漏了什么?

你所追求的目标是期待一次成功。您需要更改表达式以返回一个
int
,其中,对于位于另一个之前的项,返回负值;对于位于另一个之后的项,返回零;对于位于另一个之后的项,返回正值

另外,对于数组,
Sort
方法是
static
,因此您可以使用类名而不是实例来调用它:

Array.Sort(test, (left, right) => left.CompareTo(right));
CompareTo
是一个内置函数,用于
I可比较的
(如
int
)类型,它以我上面描述的方式返回一个
int
,因此便于进行排序。

您所关注的类型需要一个。您需要更改表达式以返回一个
int
,其中,对于位于另一个之前的项,返回负值;对于位于另一个之后的项,返回零;对于位于另一个之后的项,返回正值

另外,对于数组,
Sort
方法是
static
,因此您可以使用类名而不是实例来调用它:

Array.Sort(test, (left, right) => left.CompareTo(right));

CompareTo
是一个内置函数,用于
I可比较的
(如
int
)类型,它以我上面描述的方式返回一个
int
,因此便于进行排序。

如果在排序System.Array时有更好的错误消息,那就更好了。非常感谢!我还想补充一点,您不必使用
CompareTo
。也可以滚动您自己的工作。如果在排序System.Array时有更好的错误消息,那就太好了。非常感谢!我还想补充一点,您不必使用
CompareTo
。滚动你自己的作品也一样。