c# - 如何对 List<T> 进行排序?

标签 c# .net linq list sorting

<分区>

Possible Duplicate:
Sort a Custom Class List<>

我有一个通用收集器 List和一些代码添加 CmsCategory以无序的方式发送给收集器。 CmsCategory有字段 int CategoryIdstring Title .

List<CmsCategory> categories = new List<CmsCategory>();
categories.Sort();

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

我收到此错误:

At least one object must implement IComparable.

我的问题:

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

  • 您是否知道更适合此类操作的通用收集器?

感谢您抽出宝贵时间。

最佳答案

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

var sortedItems = categories.OrderBy(x => x.CategoryId);

如果你需要列表中的项目,你可以调用.ToList():

var sortedList = sortedItems.ToList();

使用 OrderBy() 的妙处在于,您还可以使用 ThenBy() 来根据第二个(或第三个或第四个……)进行排序。 .) 属性(property)以及:

var reallySortedItems = categories.OrderBy(x => x.CategoryId).ThenBy(x => x.OtherProp);

关于c# - 如何对 List<T> 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144364/

相关文章:

c# - 按位运算符与 C# 中位操作的 .NET 抽象

c# - 在 .NET 中应用域驱动设计的最佳实践?

c# - 合并两个列表并从列表 A 中减去列表 B 的值

c# - 使用 ManualResetEventSlim 而不是 ManualResetEvent 的最短等待时间是多少?

c# - C#System.Timers.Timer自动关闭?

.net - 项目中的所有系统命名空间都未定义

c# - 实现 TCP 成帧的正确模式是什么?它是一个过滤器堆栈吗?

c# - 如何管理多个 OrderByDescending 条件?

asp.net - jqgrid 与 asp.net webmethod 和 json 一起使用排序、分页、搜索和 LINQ——但需要动态运算符

c# - 使用 OLEDBREADER 和 MS Access 的 LIKE 命令问题