按className按字母顺序排序列表

时间:2015-09-23 10:32:47

标签: c# sorting

我在Unity / C#上做了一些练习,其中一个我有一个包含一些继承类的列表。

    public List<Item> items = new List<Item>();

每个Item都是一个继承的类,如PowerUp,ConceptArt,Bonus,他们都是来自Item ...

我想使用项目类的名称对该列表进行排序。

基本上如果我有清单

myList = { Bonus,ConceptArt, PowerUp, PowerUp,ConceptArt }

如果我对它进行排序,输出将为:

myList = { Bonus,ConceptArt, ConceptArt, PowerUp,PowerUp}

我该怎么做?

我不知道我是否清楚地解释了自己。 如果我需要编辑,请告诉我:)

thx:)

2 个答案:

答案 0 :(得分:2)

试试这个:

items = items.OrderBy(x => x.GetType().Name).ToList();

答案 1 :(得分:2)

要在适当位置排序,而不创建列表:

  myList.Sort((Comparison<Item>) 
    ((left, right) => String.Compare(left.GetType().Name, right.GetType().Name)));

检查/测试:

  String report = String.Join(", ", myList
    .Select(item => item.GetType().Name));

  Console.Write(report);