List 的Sort方法排序有三种结果 1,0,-1分别表示大于,等于,小于。
1.对于数值类型的List (List<int>),直接使用Sort进行排序。
2.对于非数值类型或者自定义类型,可通过实现IComparable接口重写CompareTo方法来排序:
输出:Bob-19 Lily-20 Mary-17 Mary-18
或不实现IComparable接口而使用linq排序:
输出:Bob-19 Lily-20 Mary-17 Mary-18
public int sortOrderForCharacter(AccessoriesProfile a, AccessoriesProfile b)
{
bool isACan = IsCanSelectForFit(a);//是否是能够选中的配件
bool isBCan = IsCanSelectForFit(b);//是否是能够选中的配件
if (a == b)
return 0;
else
{
if (a.AccessorStar == b.AccessorStar && isACan == isBCan && a.InstanceID == b.InstanceID)
return 0;
else
{
if (isACan == isBCan)
{
if (a.AccessorStar == b.AccessorStar)
{
if (a.InstanceID == b.InstanceID)
{
return 0;
}
else
{
if (a.InstanceID > b.InstanceID)
return -1;
else
return 1;
}
}
else
{
if (a.AccessorStar > b.AccessorStar)
return -1;
else
return 1;
}
}
else
{
if (isACan && !isBCan)
return -1;
else
return 1;
}
}
}
}
排序规则:优先级越高的越先对其进行排序,比如上面的代码,就是先对能不能被选中先排序,其次是星级,和id