C#集合排序的三种方法(List<T>.Sort、LINQ 的 OrderBy、IComparable<T> 接口)

news/2025/1/31 7:54:04/

见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看......

1、使用 List<T>.Sort 方法与自定义比较器
public class Person{    public string Name { get; set; }    public int Age { get; set; }}public class PersonComparer : IComparer<Person>{    public int Compare(Person x, Person y)    {        // 按年龄升序排序        return x.Age.CompareTo(y.Age);        // 或更复杂的排序逻辑    }}class Program{    static void Main()    {        List<Person> people = new List<Person>        {            new Person { Name = "A", Age = 15 },            new Person { Name = "B", Age = 25 },            new Person { Name = "C", Age = 35 }        };        people.Sort(new PersonComparer());        foreach (var person in people)        {            Console.WriteLine($"{person.Name}, {person.Age}");        }    }}
2、使用 LINQ 的 OrderBy 方法与自定义键选择器
var people = new List<Person>        {            new Person { Name = "Alice", Age = 30 },            new Person { Name = "Bob", Age = 25 },            new Person { Name = "Charlie", Age = 35 }        };        var sortedPeople = people.OrderBy(p => p.Age).ToList();
//var sortedPeople = people.OrderBy(p => p.Age).ThenBy(p => p.Name).ToList();        foreach (var person in sortedPeople)        {            Console.WriteLine($"{person.Name}, {person.Age}");        }

3、默认的排序顺序 

public class Person : IComparable<Person>{    public string Name { get; set; }    public int Age { get; set; }    public int CompareTo(Person other)    {        if (other == null) return 1;        return this.Age.CompareTo(other.Age);    }}
// 然后可以直接使用 Sort 方法,不需要传递比较器people.Sort();

关注我,不失联。有啥问题请留言。

感情恋爱合集https://blog.csdn.net/forever8341/category_12863789.html

职业发展故事https://blog.csdn.net/forever8341/category_12863790.html

常用代码片段https://blog.csdn.net/forever8341/category_12863793.html

程序开发教程https://blog.csdn.net/forever8341/category_12863792.html

自我备考经验 https://blog.csdn.net/forever8341/category_12863791.html

高阶高效代码https://blog.csdn.net/forever8341/category_12873345.html

金融语言解析https://blog.csdn.net/forever8341/category_12877262.html


http://www.ppmy.cn/news/1568106.html

相关文章

【PyTorch】6.张量形状操作:在深度学习的 “魔方” 里,玩转张量形状

目录 1. reshape 函数的用法 2. transpose 和 permute 函数的使用 4. squeeze 和 unsqueeze 函数的用法 5. 小节 个人主页&#xff1a;Icomi 专栏地址&#xff1a;PyTorch入门 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&am…

通过OPC UA或MQTT协议,安全地将工业设备连接至物联网软件

尽管 Anybus Compact IIoT Secure 依然通过工业以太网协议&#xff08;如 PROFINET 或 EtherNet/IP&#xff09;与控制器交换数据&#xff0c;但它还可以使用 OPC UA 或 MQTT 协议&#xff0c;将数据传送到 IT 系统。这使得公司能够分析数据&#xff0c;而不需要额外开发定制软…

向量和矩阵算法笔记

向量和矩阵算法笔记 Ps:因为本人实力有限,有一部分可能不太详细,若有补充评论区回复,QWQ 向量 向量的定义 首先,因为我刚刚学到高中的向量,对向量的看法呢就是一条有长度和方向的线,不过这在数学上的定义其实是不对,甚至跟我看的差别其实有点大,真正的定义就是数域…

Windows11暂停自动更新

Windows11在设置页的暂停自动更新选项最大值只能设置为7天&#xff0c;我们通过修改注册表来实现永久暂停更新。 步骤一&#xff1a;打开注册表 按Win键打开Windows搜索界面&#xff0c;在搜索栏中输入Reg&#xff0c;选择注册表编辑器并打开。 步骤二&#xff1a;修改注册表…

探索JavaScript前端开发:开启交互之门的神奇钥匙(二)

目录 引言 四、事件处理 4.1 事件类型 4.2 事件监听器 五、实战案例&#xff1a;打造简易待办事项列表 5.1 HTML 结构搭建 5.2 JavaScript 功能实现 六、进阶拓展&#xff1a;异步编程与 Ajax 6.1 异步编程概念 6.2 Ajax 原理与使用 七、前沿框架&#xff1a;Vue.js …

C# 小说阅读 文本文件阅读

小说阅读 文本文件阅读 编程语言&#xff1a;C# 目录页 阅读 浏览页(webBrowser)&#xff1a;

51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片;使用到的硬件及课程安排)

文章目录 1. 什么是单片机1.1 微型计算机的组成1.2 微型计算机的应用形态1.3 单板微型计算机1.4 单片机(MCU)1.4.1 单片机内部结构1.4.2 单片机应用系统的组成 1.5 80C51单片机系列1.5.1 STC公司的51单片机1.5.1 STC公司单片机的命名规则 2. 单片机的特点及应用领域2.1 单片机的…

高级java每日一道面试题-2025年01月24日-框架篇[SpringBoot篇]-如何理解 Spring Boot 中的 Starters(启动器) ?

如果有遗漏,评论区告诉我进行补充 面试官: 如何理解 Spring Boot 中的 Starters(启动器) ? 我回答: 一、Starters的定义与作用 1. 定义 Starters 是Spring Boot中的一组预定义依赖关系&#xff0c;这些依赖被封装在一个单一的包中。它们简化了Maven或Gradle配置文件中的依…