C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending
C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending
- List<T>.Sort()
- 方法签名
- 使用场景
- 示例
- 升序
- 实现效果
- 降序
- 实现效果
- IEnumerable<T>.OrderBy()
- 方法签名
- 使用场景
- 示例
- 实现效果
- Enumerable<T>.OrderByDescending()
- 使用场景
- 示例
- 实现效果
- 总结
在C#中,List<T>
类提供了多种方法来进行排序,最常用的是 Sort
方法和IEnumerable<T>
中提供的扩展方法 OrderBy
/OrderByDescending
方法。这些方法可以按照特定的顺序重新排列列表中的元素。
List.Sort()
Sort
方法会对列表中的元素进行原地排序,改变原始列表的顺序。
方法签名
public void Sort();
public void Sort(IComparer<T> comparer);
public void Sort(Comparison<T> comparison);
使用场景
- 当你想要直接修改现有列表的顺序时。
示例
升序
using System;
using System.Collections.Generic;public class Student
{public string Name { get; set; }public int Age { get; set; }
}public class Program
{public static void Main(){List<Student> students = new List<Student>{new Student { Name = "张三", Age = 20 },new Student { Name = "李四", Age = 18 },new Student { Name = "王五", Age = 22 }};// 使用 Sort 方法按年龄排序students.Sort((x, y) => x.Age.CompareTo(y.Age));// 输出排序后的学生名单foreach (var student in students){Console.WriteLine($"{student.Name}, {student.Age}");}}
}
在这个例子中,Sort
方法根据学生的年龄对学生列表进行了升序排序。
实现效果
降序
//降序students.Sort((x, y) => -x.Age.CompareTo(y.Age));//或students.Sort((x, y) => y.Age.CompareTo(x.Age));
实现效果
IEnumerable.OrderBy()
OrderBy
是 LINQ 提供的方法,它可以创建一个排好序的新列表,不会改变原始列表的顺序。
方法签名
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);
使用场景
- 当你不希望改变原始列表的顺序,而是想得到一个新的有序列表时。
示例
using System;
using System.Collections.Generic;
using System.Linq;public class Student
{public string Name { get; set; }public int Age { get; set; }
}public class Program
{public static void Main(){List<Student> students = new List<Student>{new Student { Name = "张三", Age = 20 },new Student { Name = "李四", Age = 18 },new Student { Name = "王五", Age = 22 }};// 使用 OrderBy 方法按年龄排序var sortedStudents = students.OrderBy(s => s.Age);// 输出排序后的学生名单foreach (var student in sortedStudents){Console.WriteLine($"{student.Name}, {student.Age}");}}
}
在这个例子中,OrderBy
方法根据学生的年龄创建了一个新的有序列表,原始列表 students
保持不变。
实现效果
Enumerable.OrderByDescending()
OrderByDescending
也是 LINQ 提供的方法,类似于 OrderBy
,但是它是按照降序排序。
使用场景
- 当你需要按降序排序时。
示例
using System;
using System.Collections.Generic;
using System.Linq;public class Student
{public string Name { get; set; }public int Age { get; set; }
}public class Program
{public static void Main(){List<Student> students = new List<Student>{new Student { Name = "张三", Age = 20 },new Student { Name = "李四", Age = 18 },new Student { Name = "王五", Age = 22 }};// 使用 OrderByDescending 方法按年龄降序排序var sortedStudentsDesc = students.OrderByDescending(s => s.Age);// 输出排序后的学生名单foreach (var student in sortedStudentsDesc){Console.WriteLine($"{student.Name}, {student.Age}");}}
}
在这个例子中,OrderByDescending
方法根据学生的年龄创建了一个新的降序列表,原始列表 students
保持不变。
实现效果
总结
总结来说,如果你想要改变原始列表的顺序,使用 Sort
;如果你不想改变原始列表的顺序,而是想得到一个新的有序列表,使用 OrderBy
或 OrderByDescending
。
相关文章:

C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending
C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending List<T>.Sort()方法签名使用场景示例升序实现效果 降序实现效果 IEnumerable<T>.OrderBy()方法签名使用场景示例实现效果 Enumerable<T>.OrderByDescending()…...

仓库管理系统
摘 要 随着电子商务的快速发展和物流行业的蓬勃发展,仓库管理成为了企业重要的一环。仓库管理涉及到商品的入库、出库、库存管理等一系列操作,对于企业的运营效率和成本控制具有重要影响。传统的仓库管理方式往往依赖于人工操作和纸质记录,存…...

AI绘画Stable Diffusion:超级质感真人大模型,逼真青纯!
大家好,我是设计师阿威 今天和大家分享一个具有超级质感的基于SD1.5的真人大模型:极致质感-DgirlV5,该模型追求质感的不断优化,细到发丝,当前最新版本是V5.1,修正了V5版本整体色彩发红的问题。 作者对该模…...

CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中
CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中 code review! 文章目录 CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中1.CMAKE_INSTALL_PREFIX详解变量作用设置 CMAKE_INSTALL_PREFIX示例影响范围常见用法特别…...

数据结构之二叉树的超详细讲解(3)--(二叉树的遍历和操作)
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 数据结构之二叉树的超详细讲解(3)--(二叉树的遍历和操作) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评…...

Arduino - 旋转编码器 - 伺服电机
Arduino - 旋转编码器 - 伺服电机 Arduino - Rotary Encoder In this tutorial, We are going to learn how to program Arduino to rotate a servo motor according to the rotary encoder’s output value. 在本教程中,我们将学习如何对Arduino进行编程ÿ…...

儿童电动音乐牙刷OTP芯片方案:NV040C,耐温耐压,抗干扰能力强
一:方案背景概述 随着科技的飞速发展,源于对儿童口腔健康深入细致的关怀,以及对现代科技在日常生活用品中应用的不断追求,儿童电动音乐牙刷OTP芯片方案的诞生。 二:芯片简介 NV040C语音芯片是一款性能稳定、适合工厂量…...

Sentinel链路流控模式失效的解决方法
解决方法 1、在pom.xml中增加sentinel-web-servlet的依赖,我使用的版本是1.7.1 <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-web-servlet</artifactId> </dependency>2、在项目中添加一个FilterCon…...

Web应用安全测试-专项漏洞(一)
Web应用安全测试-专项漏洞(一) 专项漏洞部分注重测试方法论,每个专项仅列举一个例子。实际测试过程中,需视情况而定。 文章目录 Web应用安全测试-专项漏洞(一)Web组件(SSL/WebDAV)漏…...

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS Huawei (华为) FusionServer 定制版
VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U2 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC (日电)、Huawei (华为)、xFusion (超聚…...
python中的高阶函数介绍
在Python中,高阶函数是指那些可以接受函数作为参数或者返回函数作为结果的函数。这种特性使得函数式编程成为可能,并且可以编写出更加简洁和灵活的代码。以下是Python中一些常用的高阶函数: map() map() 函数接受一个函数和一个可迭代对象作为…...

华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)
华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…...
[开发|java] LocalDate转化为LocalDateTime
要将 java.time.LocalDate 转换为 java.time.LocalDateTime,你需要指定一天中的时间。因为 LocalDate 只包含日期部分(年、月、日),而 LocalDateTime 包含日期和时间(时、分、秒、纳秒),所以在转…...

介绍几种 MySQL 官方高可用方案
前言: MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。 1.MySQL Replication MySQL Replication 是官方提供的主从同…...

IMU坐标系与自定义坐标系转化
1.首先示例图为例: 虚线黑色角度为IMU的坐标系;实线为自定义坐标系; 矫正:(默认angleyaw为IMU采的数据角度) angleyaw_pt angleyaw-25;if(-180<angleyaw&&angleyaw<-155) // 角度跳变问…...

《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()
观前提示:函数完整代码在文末,本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法f105时钟树详解图 HAL_RCC_OscConfig() 函数介绍: 此函数是一个用于初始化RCC(Reset and Clock Control)振荡器(Osc…...

手动将jar包导入本地Maven仓库
1、进入存放jar包的目录,可以先放进仓库底下 2、cmd回车 3、执行命令,看到BUILD SUCCESS就是成功了 -DgroupId、-DartifactId、-Dversion、-Dfile记得换成自己对应的 mvn install:install-file -DgroupIdcom.github.03 -DartifactIdonvif -Dversion1.0…...

煤安防爆手机为什么能在煤矿井下使用
煤安防爆手机之所以能在煤矿井下使用,是因为它们经过特殊设计,符合严格的防爆安全标准,能够防止电火花引发爆炸,同时具备防尘防水、抗冲击等特性,确保在恶劣的煤矿环境中稳定可靠地运行,为工作人员提供安全…...

科普小课堂|不同版本USB接口详细解析
USB接口凭借其广泛的兼容性和高性能,已成为连接多样外设的主要接口,囊括了日常的键盘、鼠标等输入设备以及其他更多的领域。不仅如此,USB还展现了高度灵活性,能够便捷地转换为其他总线接口,例如实现USB到以太网或USB到…...
Spring Boot中的JSON解析优化
Spring Boot中的JSON解析优化 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Spring Boot应用中如何优化JSON解析,以提升系统的性能…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...