尝试在C#中对对象列表进行排序

时间:2017-11-15 13:48:35

标签: c# list sorting

我正在尝试对c#对象列表进行排序,该对象的组成如下:int numstring 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
});

有谁知道怎么做?非常感谢你

2 个答案:

答案 0 :(得分:3)

由于需要明显的词典排序,可以使用Linq扩展方法OrderByThenBy(记录为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);
});