如何排序List <T>?

Gib*_*boK 2 .net c# linq sorting list

可能重复:
排序自定义类列表<>

我有一个通用收集器List和一些代码CmsCategory以无序的方式添加到收集器.CmsCategory有领域int CategoryIdstring Title.

List<CmsCategory> categories = new List<CmsCategory>();
categories.Sort();
Run Code Online (Sandbox Code Playgroud)

插入完成后,我需要将收集器中的所有对象排序CategoryId (ascending).

我收到此错误:

至少有一个对象必须实现IComparable.

我的问题:

  • 我在这里使用List<T> 做错了什么?

  • 您是否了解更适合此类操作的Generic Collector?

谢谢你的时间.

dle*_*lev 9

您可以使用该OrderBy()方法基于属性进行排序:

var sortedItems = categories.OrderBy(x => x.CategoryId);
Run Code Online (Sandbox Code Playgroud)

如果您需要列表中的项目,可以致电.ToList():

var sortedList = sortedItems.ToList();
Run Code Online (Sandbox Code Playgroud)

关于使用的一个很酷的事情OrderBy()是你也可以使用ThenBy()它来基于第二个(或第三个或第四个......)属性进行排序:

var reallySortedItems = categories.OrderBy(x => x.CategoryId).ThenBy(x => x.OtherProp);
Run Code Online (Sandbox Code Playgroud)