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

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

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

相关推荐
fengfuyao98522 分钟前
基于MATLAB的GUI实现人脸检测、眼睛检测以及LBP直方图显示
开发语言·计算机视觉·matlab
★YUI★27 分钟前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
CHANG_THE_WORLD40 分钟前
# C++ 中的 `string_view` 和 `span`:现代安全视图指南
开发语言·c++
Franklin1 小时前
Python界面设计【QT-creator基础编程 - 01】如何让不同分辨率图像自动匹配graphicsView的窗口大小
开发语言·python·qt
谷宇.1 小时前
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
游戏·unity·c#·游戏程序·unity3d·游戏开发·游戏编程
郝学胜-神的一滴1 小时前
深入理解QFlags:Qt中的位标志管理工具
开发语言·c++·qt·程序人生
LZQqqqqo1 小时前
C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比
windows·c#·list
柯南二号2 小时前
【Java后端】MyBatis-Plus 原理解析
java·开发语言·mybatis
我是哈哈hh2 小时前
【Node.js】ECMAScript标准 以及 npm安装
开发语言·前端·javascript·node.js
Sammyyyyy4 小时前
2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
开发语言·javascript·node.js