阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍C#中对集合排序的三种方式

267次阅读
没有评论

共计 2122 个字符,预计需要花费 6 分钟才能阅读完成。

导读 这篇文章介绍了 C# 中对集合排序的三种方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

对集合排序,可能最先想到的是使用 OrderBy 方法。

class Program
{static void Main(string[] args)
    {IEnumerable result = GetStudents().OrderBy(r => r.Score);
        foreach (var item in result)
        {Console.WriteLine(item.Name + "--" + item.Score);
        }
        Console.ReadKey();}
    private static List GetStudents()
    {return new List()
        {new Student(){Id = 1, Name = "张三",Age = 15, Score = 80},
            new Student(){Id = 2, Name = "李四",Age = 16, Score = 70},
            new Student(){Id = 3, Name = "赵武",Age = 14, Score = 90}
        };
    }
}
public class Student 
{public int Id { get; set;}
    public string Name {get; set;}
    public int Age {get; set;}
    public int Score {get; set;}
}

以上,OrderBy 返回的类型是 IEnumerable

如果想使用 List 的 Sort 方法,就需要让 Student 实现 IComparable 接口。

class Program
 {static void Main(string[] args)
     {List result = GetStudents();
         result.Sort();
         foreach (var item in result)
         {Console.WriteLine(item.Name + "--" + item.Score);
         }
         Console.ReadKey();}
     private static List GetStudents()
     {return new List()
         {new Student(){Id = 1, Name = "张三",Age = 15, Score = 80},
             new Student(){Id = 2, Name = "李四",Age = 16, Score = 70},
             new Student(){Id = 3, Name = "赵武",Age = 14, Score = 90}
         };
     }
 }
 public class Student : IComparable
 {public int Id { get; set;}
     public string Name {get; set;}
     public int Age {get; set;}
     public int Score {get; set;}
      
     public int CompareTo(Student other)
     {return  this.Score.CompareTo(other.Score);
     }
 }

让 Student 实现 IComparable 接口固然很好,如果 Student 是一个密封类,我们无法让其实现 IComparable 接口呢?不用担心,Sort 方法提供了一个重载,可以接收 IComparer 接口类型。

class Program
 {static void Main(string[] args)
     {List result = GetStudents();
         result.Sort(new StudentSorter());
         foreach (var item in result)
         {Console.WriteLine(item.Name + "--" + item.Score);
         }
         Console.ReadKey();}
     private static List GetStudents()
     {return new List()
         {new Student(){Id = 1, Name = "张三",Age = 15, Score = 80},
             new Student(){Id = 2, Name = "李四",Age = 16, Score = 70},
             new Student(){Id = 3, Name = "赵武",Age = 14, Score = 90}
         };
     }
 }
 public class Student
 {public int Id { get; set;}
     public string Name {get; set;}
     public int Age {get; set;}
     public int Score {get; set;}
 }
 public class StudentSorter : IComparer
 {public int Compare(Student x, Student y)
     {return x.Score.CompareTo(y.Score);
     }
 }

综上,如果我们想对一个集合排序,大致有三种方式:

  • 1、使用 OrderBy 方法,返回 IEnumerable 类型。
  • 2、让集合元素实现 IComparable 接口,再使用 Sort 方法,返回 void。
  • 3、集合元素不实现 IComparable 接口,针对集合元素类型写一个实现 IComparer 接口的类,把该类实例作为 Sort 方法的参数。
  • 阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥玩云-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2122字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

    星哥玩云

    星哥玩云
    星哥玩云
    分享互联网知识
    用户数
    4
    文章数
    19348
    评论数
    4
    阅读量
    7798447
    文章搜索
    热门文章
    开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

    开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

    开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
    星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

    星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

    星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
    云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

    云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

    云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
    我把用了20年的360安全卫士卸载了

    我把用了20年的360安全卫士卸载了

    我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
    星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

    星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

    星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
    阿里云CDN
    阿里云CDN-提高用户访问的响应速度和成功率
    随机文章
    星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

    星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

    星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
    2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

    2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

    2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
    我把用了20年的360安全卫士卸载了

    我把用了20年的360安全卫士卸载了

    我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
    飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

    飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

    飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
    亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

    亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

    亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示 首先来回顾一下 10...

    免费图片视频管理工具让灵感库告别混乱

    一言一句话
    -「
    手气不错
    还在找免费服务器?无广告免费主机,新手也能轻松上手!

    还在找免费服务器?无广告免费主机,新手也能轻松上手!

    还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
    星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

    星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

    星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
    开发者福利:免费 .frii.site 子域名,一分钟申请即用

    开发者福利:免费 .frii.site 子域名,一分钟申请即用

      开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
    支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

    支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

    支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
    自己手撸一个AI智能体—跟创业大佬对话

    自己手撸一个AI智能体—跟创业大佬对话

    自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...