C# 学生列表和linq Max和Min方法的可比较实现

C# 学生列表和linq Max和Min方法的可比较实现,c#,linq,C#,Linq,我已经在我的学生班级上实现了IComparable界面,我正在尝试获取列表中学生的最小和最大年龄。我得到的是正确的最大值,但不是最小值。我在代码中遗漏了什么 我不确定LinqMAX和MIN方法在实现IComparable的类列表上是否给出了正确的结果。当我运行下面的代码时,我得到Max Age=31,Min Age=20(但应该是17) 您的比较执行不正确,在某些情况下,它返回的值应低于0 CompareTo(T)方法的实现必须返回Int32 它有三个值之一,如下表所示 小于零此对象位于Comp

我已经在我的
学生
班级上实现了
IComparable
界面,我正在尝试获取列表中学生的最小和最大年龄。我得到的是正确的最大值,但不是最小值。我在代码中遗漏了什么

我不确定LinqMAXMIN方法在实现
IComparable
的类列表上是否给出了正确的结果。当我运行下面的代码时,我得到Max Age=31,Min Age=20(但应该是17)


您的
比较执行不正确,在某些情况下,它返回的值应低于
0

CompareTo(T)
方法的实现必须返回
Int32
它有三个值之一,如下表所示

小于零此对象位于
CompareTo
方法按排序顺序指定的对象之前

Zero此当前实例在排序顺序中与
CompareTo
方法参数指定的对象位于同一位置

大于零此当前实例按照排序顺序跟随
CompareTo
方法参数指定的对象

最简单的方法是:

public int CompareTo(Student other)
{
    return this.Age.CompareTo(other.Age);
}
public int CompareTo(Student other)
{
    return this.Age.CompareTo(other.Age);
}

您的
比较执行不正确,在某些情况下,它返回的值应低于
0

CompareTo(T)
方法的实现必须返回
Int32
它有三个值之一,如下表所示

小于零此对象位于
CompareTo
方法按排序顺序指定的对象之前

Zero此当前实例在排序顺序中与
CompareTo
方法参数指定的对象位于同一位置

大于零此当前实例按照排序顺序跟随
CompareTo
方法参数指定的对象

最简单的方法是:

public int CompareTo(Student other)
{
    return this.Age.CompareTo(other.Age);
}
public int CompareTo(Student other)
{
    return this.Age.CompareTo(other.Age);
}

不要重新发明轮子,使用框架在Age属性上已经实现的CompareTo


不要重新发明轮子,使用框架在Age属性上已经实现的CompareTo