我正在尝试对c#对象列表进行排序,该对象的组成如下:int num
和string alphabet
。
我希望这样的清单:
- element 1 : num : 2 alphabet : A
- element 2 : num : 1 alphabet : A
- element 3 : num : 1 alphabet : B
- element 4 : num : 2 alphabet : B
- element 5 : num : 2 alphabet : B
变得那样:
- element 1 : num : 1 alphabet : A
- element 2 : num : 2 alphabet : A
- element 3 : num : 1 alphabet : B
- element 4 : num : 2 alphabet : B
- element 5 : num : 2 alphabet : B
我已经这样做了:
myList.Sort(MyObject p1, MyObject p2) {
p1.num;
p2.Type;
//code but i don't know what
});
有谁知道怎么做?非常感谢你
答案 0 :(得分:3)
由于需要明显的词典排序,可以使用Linq扩展方法OrderBy
和ThenBy
(记录为here)对列表进行排序,如下所示。
myList = MyList.OrderBy(x => x.alphabet).ThenBy(x => x.num).ToList();
答案 1 :(得分:2)
如果要对现有列表 inplace 进行排序:
myList.Sort((left, right) => {
int r = string.Compare(left.alphabet, right.alphabet);
if (r != 0)
return r;
else
return left.num.CompareTo(right.num);
});