【发布时间】:2014-03-24 23:25:54
【问题描述】:
我有一个 List<> 包含来自具有 String 属性的类的对象,我想使用以下规则对其进行排序:
- 列表中“代码”为
X5的所有对象都应位于列表顶部。 - 列表中“代码”为
G2的所有对象都将位于X5对象之后。 - 列表中“代码”为
H3的所有对象都将位于G2对象之后。 - 所有其他对象应位于列表末尾,按“代码”的字母顺序排序。
我尝试了一些代码,但一直抛出这个异常:
System.ArgumentException:无法排序,因为 IComparer.Compare() 方法返回不一致的结果。一个值与自身比较不相等,或者一个值与另一个值重复比较会产生不同的结果。 IComparer: ''。
代码尝试:
public class myObject: IComparable<myObject>
{
int id { get; set; }
string name { get; set; }
string code { get; set; }
public myObject()
{
}
public int CompareTo(myObject other)
{
//I don't know how to write the sort logic
}
}
稍后我想创建一个“myObject”列表并对其进行排序:
List<myObject> objects = new List<myObject>();
objects.Add(new MyObject() { id = 0, name = "JENNIFER"; code = "G2"; });
objects.Add(new MyObject() { id = 1, name = "TOM"; code = "H3"; });
objects.Add(new MyObject() { id = 2, name = "JACK"; code = "G2"; });
objects.Add(new MyObject() { id = 3, name = "SAM"; code = "X5"; });
objects.Sort();
列表将按以下顺序排列:
- SAM
- 詹妮弗
- 杰克
- 汤姆
【问题讨论】:
-
从 CompareTo 方法中粘贴您的排序逻辑
-
那么,排序逻辑在哪里?
-
我以前从未写过排序逻辑,而且我的第一次尝试很糟糕,所以它不会像很好地解释问题那样有帮助。