方法一:调用IComparable<T>接口
重写ComparerTo方法
代码如下:
class Woman : IComparable<Woman>
{
public int age;
public string name;
public Woman() { }
public Woman(int _age, string _name)
{
age = _age;
name = _name;
}
//重写的CompareTo方法,根据age排序
public int CompareTo(Woman other)
{
if (null == other)
{
return 1;//空值比较大,返回1
}
//如果选择name排序则会按照ABC来排序
if(this.age!=other.age)
{
return this.age.CompareTo(other.age);//升序
//return other.age.CompareTo(this.age);//降序
}
else
{
return this.name.CompareTo(other.name)//当年纪相同时通过名字排序
}
}
public override string ToString()
{
return "age" + age + "name" + name ;
}
}
/*****************IComparable接口************************/
在main调用
//easyList为Woman列表
easyList.Sort(); //方法一
// easyList.Sort((x, y) => y.CompareTo(x));//方法二可调整x y改变内部排序
foreach (var item in easyList)
{
Console.WriteLine(item.ToString());
}
Console.ReadLine();
/*****************IComparable接口*********************************/
方法二:调用 IComparer<T>接口
重写Compare方法
代码如下:
class Woman : IComparer<Woman>
{
public int age;
public string name;
public Woman() { }
public Woman(int _age, string _name)
{
age = _age;
name = _name;
}
// Compare函数
public int Compare(Woman x, Woman y)
{
return x.age.CompareTo(y.age);//升序
}
//重写ToString方便打印
public override string ToString(){
return "age" + age + "name" + name ;
}
}
/*********************IComparer接口*********************************/
在main调用
//easyList为Woman列表
IComparer<Woman> comparer = new Woman();
easyList.Sort(comparer); foreach (var item in easyList)
{
Console.WriteLine(item.ToString());
}
Console.ReadLine();
/**********************IComparer接口********************************/