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
界面,我正在尝试获取列表中学生的最小和最大年龄。我得到的是正确的最大值,但不是最小值。我在代码中遗漏了什么
我不确定LinqMAX和MIN方法在实现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