按className的字母顺序对列表排序

本文关键字:列表 排序 顺序 className | 更新日期: 2023-09-27 18:14:01

我正在做一些关于Unity/c#的练习,其中一个我有一个包含一些继承类的列表。

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

每个Item都是一个继承类,如PowerUp,ConceptArt,Bonus,它们都继承自Item…

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

基本上如果我有list

myList = { Bonus,ConceptArt, PowerUp, PowerUp,ConceptArt }
如果我对它排序,输出将是:
myList = { Bonus,ConceptArt, ConceptArt, PowerUp,PowerUp}

我该怎么做?

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

thx:)

按className的字母顺序对列表排序

试试这个:

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

在位置对进行排序,而不新建列表:

  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);