首页 > 编程语言 >C#中List的3种排序方法

C#中List的3种排序方法

时间:2024-06-13 17:26:16浏览次数:30  
标签:name C# List list ThenBy new 排序

原文链接:https://blog.csdn.net/lwf3115841/article/details/130459042

                https://blog.csdn.net/Pei_hua100/article/details/108072643

ist是C#常用的数组,它较之前的ArryList更加灵活,解决了Arrylist会出现装箱和拆箱的不安全问题,它是一种动态数组,可以存储对象或元素的集合。在处理比多的数据时,对list排序也非常重要,这样可以对数据更加容易的处理。本文将讲述3种list的排序方法。

方法1:Sort方法

这是C#最常用的排序方法,此方法可以让list按升序的方式排列。代码如下:

List<int> numbers = new List<int> {7, 4, 5, 3, 8};
 numbers.Sort();
 

比较简单的升序排序方式可以用它。

方法2:使用比较函数排序

在某些情况下,您可能想要对列表排序按照比较逻辑。在这个场景中,您可以使用比较函数。比较函数使用比较委托定义的,它应该返回一个整数,代表了两个元素相比较的相对顺序。使用这种方法的语法比较函数如下:

List<string> names = new List<string> { "刘玄德", "关羽", "张飞", "赵云","忧郁的蛋" };
names.Sort((x, y) => x.Length.CompareTo(y.Length));
foreach (var name in names)
{
Console.WriteLine(name);
}
 

输出结果:关羽,张飞,赵云,刘玄德,忧郁的蛋

这个案例主要是安装字符串的长度来比较。

方法3:OrderBy和ThenBy

c#数组list排序的另一种方法是通过使用LINQ方法中的OrderBy和ThenBy 。

在C#的List操作中,针对List对象集合的排序我们可以使用OrderBy、OrderByDescending、ThenBy、ThenByDescending等方法按照特定的对象属性进行排序,其中Orderby表示按指定的第一个属性升序排序,OrderByDescending表示按指定的第一个属性降序排序,如果排序需要使用到不止一个条件的时候,可先使用OrderBy或者OrderByDescending方法排序完成后,再在方法链中调用ThenBy或者ThenByDescending对第二个条件排序,ThenBy会进行升序排序,ThenByDescending则是进行降序排序。使用OrderBy和ThenBy的示例如下:

List<Customer> list = new List<Customer>();
list.Add(new Customer { id = 1, name = "刘德华", age = 56, period=40 });
list.Add(new Customer { id = 2, name = "张学友", age = 52, period = 35 });
list.Add(new Customer { id = 3, name = "黎明", age = 58, period = 33 });
list.Add(new Customer { id = 4, name = "郭富城", age = 60, period = 36 });
list.Add(new Customer { id = 5, name = "古天乐", age = 60, period = 30 });
var sortlist = list.OrderBy(o=>o.age).ThenBy(t=>t.period).ToList();
//这是类
public class Customer
{
public int id { get; set; }
        public string name { get; set; }
public int age { get; set; }
public int period { get; set; }

}

标签:name,C#,List,list,ThenBy,new,排序
From: https://www.cnblogs.com/Dongmy/p/18246302

相关文章

  • 2Gb 256Mx8 KTDM2G3C818BGCEAT KTDM2G3C818BGIEAT(SDRAM) KTM4GH1AHI01 KTM8GL1ASI01
    一、DDR3(L)SDRAM概述SMART’sDDR3(L)SDRAM组件与行业广泛兼容,并提供x8和x16配置。这些1.35v(DDR3L)和1.5V(DDR3)器件采用标准78和96引脚网格阵列封装,时钟速度为1866Mbps,密度为1Gb、2Gb和4Gb。宽/汽车工作范围器件也针对汽车AEC-Q1002类应用进行了测试和认证。DDR3(L)SDRAM......
  • AI智能创作工具:ChatMoney,一键创作,让你的公众号文章爆款!
    本文由ChatMoney团队出品引言想不想你的公众号文章一炮而红?是不是羡慕那些动不动就10W+的爆款文章?别眼红了,用ChatMoney,你也可以做到!这货可不是普通的写作工具,它是你的文章变成金钥匙的魔法师。一按键,爆款文章就来啦!粉丝、点赞、转发,全都哗啦啦地来。好奇怎么做到的?跟我来,咱们......
  • nssctf
    crypto1.UUencode不知道是什么解码,用随波逐流看看 还是不知道仔细看看,突然想起他是哪个编码了,UUencode 2栅栏  猜了很多 最后猜了网站的名字,嘿嘿出来了 3.社会主义 很简单的社会主义核心价值解码 4.bubble密码 是ook吧uunbase64  这就没见......
  • 跟着杨中科学习(六)EFCore(四)
    自引用的组织结构树classOrgUnit{publiclongId{get;set;}publiclong?ParentId{get;set;}publicstringName{get;set;}publicOrgUnit?Parent{get;set;}publicList<OrgUnit>Children{get;set;}=newList<OrgUnit&g......
  • ABC 321 F #(subset sum = K) with Add and Erase
    题意有一个箱子,每次可以向里面添加或者拿走一个数,问每次操作过后,任选箱子里的数相加,总和等于k的方案数是多少。思路萌新算是学到新东西了,这其实是个可撤销背包的板题。我们先考虑一个问题:对于普通计数类dp,我们现在禁用某一个数i,我们现在想知道某一个数j有多少种方式表示(即dp......
  • requests 开启charles代理报错
    当前报错urllib3版本:1.26.7解决代理报错的几种方式:配置代理请求proxies={'http':'http://127.0.0.1:8888','https':'http://127.0.0.1:8888'}data=requests.post(url,json=body,headers=headers,verify=False,pr......
  • springboot Invalid bound statement (not found): com.elitel.xxx.dao.xxx 错误处
    如果这篇文章能给你带来帮助,不胜荣幸,如果有错误也请批评指正,一起学习,共同进步!今天给同事看了个问题,发现了这个问题,之前也遇见过,可是没有遇见这种情况,这次我记录一下。首先来说,造成这个错误的原因是什么。它是在SpringBoot应用程序中遇到“Invalidboundstatement(not......
  • CIFAR-100 dataset分类
    ThisdatasetisjustliketheCIFAR-10,exceptithas100classescontaining600imageseach.Thereare500trainingimagesand100testingimagesperclass.The100classesintheCIFAR-100aregroupedinto20superclasses.Eachimagecomeswitha"......
  • 微服务架构qiankun集成react子应用
    前一篇文章讲了qiankun集成vue子应用,这篇随笔讲集成react子应用。1、创建react子应用用react脚手架初始化一个react项目,至于项目的数据仓库store和路由、以及UI组件库这里就不做讲解,可以自己自行网上找资料配置。create-react-appmy-react-app2、在src路径下创建publicPat......
  • linux 下MySQL命令行导出csv文件格式
    从数据库服务器导出1、登录mysqlmysql-uroot-p2、切换数据库usedatabase3、导出文件命令SELECTid,column1,column2FROMtableINTOOUTFILE'/tmp/mysqlfiles/table.csv'FIELDSTERMINATEDBY','ENCLOSEDBY'"'LINESTERMINATEDBY'n' sel......