当前位置: 首页 > news >正文

C#中对泛型集合元素使用List.Sort()方法排序

啊!终于整明白了!

今天拿出一点时间研究了一下C#的List<T>如何排序,基本上整明白了。很多场景下,用这个排序还是很方便的。

//构造一个类   public class mth{//编号private string id;public string Id{get { return id; }set { id = value; }}//年龄private int age;public int Age{get { return age; }set { age = value; }}//薪水private int salary;public int Salary{get { return salary; }set { salary = value; }}}//实例化3个对象mth m = new mth();m.Id = "1";m.Age = 35;m.Salary = 60000;mth n = new mth();n.Id = "2";n.Age = 33;n.Salary = 55000;mth p = new mth();p.Id = "3";p.Age = 25;p.Salary = 80000;//创建一个mList集合,把上面3个对象放进去List<mth> mList = new List<mth>();mList.Add(m);mList.Add(n);mList.Add(p);

这时,如果我们想按年龄由低到高排序,就可以使用CompareTo()来操作,如下 

mList.Sort((x, y) => x.Age.CompareTo(y.Age));

排序后,再看看mList里面的样子:

foreach (mth mt in mList){Console.WriteLine(mt.Id);}

这时,如果想按薪水由高到低排序(降序),那么,我们除了把Age换成Salary外,还需要在前面加个 - ,如下:

mList.Sort((x, y) => -x.Salary.CompareTo(y.Salary));

这时,如果再加入一个对象:

            mth boss = new mth();boss.Id = "4";boss.Age = 42;boss.Salary = 80000;mList.Add(boss);

PS: 没想到吧,boss的薪水竟然跟p的一样多~

boss说,按薪水从高到低的顺序排列,如果薪水一样,年龄大的在前,年龄小的在后

那么,我们可以这样排序:

mList.Sort((x, y) => -x.Salary.CompareTo(y.Salary)*2-x.Age.CompareTo(y.Age));

看到了没?权重大的可以在后面*n,这个n相当于一个权重系数,排序后看一下:

boss又说,年轻人更有活力,年龄大的放在后面吧,把年轻人放前面

那么,我们再改一下排序:

mList.Sort((x, y) => -x.Salary.CompareTo(y.Salary)*2+x.Age.CompareTo(y.Age));

看明白了吧?很简单,需要降序排列的,只需要在前面放个“-”,需要升序排列的,前面放个“+”

就这样,收工!

相关文章:

C#中对泛型集合元素使用List.Sort()方法排序

啊&#xff01;终于整明白了&#xff01; 今天拿出一点时间研究了一下C#的List<T>如何排序&#xff0c;基本上整明白了。很多场景下&#xff0c;用这个排序还是很方便的。 //构造一个类 public class mth{//编号private string id;public string Id{get { return id; …...

【项目】在线音乐播放器测试报告

目录 项目背景 项目功能 测试计划 功能测试 登录页面的测试 测试用例 测试结果 注册页面的测试 测试用例 测试结果 音乐列表页面的测试 测试用例 测试结果 出现的bug 搜索功能的bug 问题解决 删除功能的bug 问题解决 喜欢列表页面的测试 测试用例 测试结果…...

[C++ 网络协议] 多线程服务器端

具有代表性的并发服务器端实现模型和方法&#xff1a; 多进程服务器&#xff1a;通过创建多个进程提供服务。 多路复用服务器&#xff1a;通过捆绑并统一管理I/O对象提供服务。 多线程服务器&#xff1a;通过生成与客户端等量的线程提供服务。✔ 目录 1. 线程的概念 1.1 为什…...

宝塔部署node后使用pm2管理上传文件路径失效问题

如何进行文件上传&#xff1f; node上传文件 vue3 elementPlus 组件封装 在本地或者以宝塔终端的形式允许 上传后是没问题的&#xff0c;直接默认对multer直接写入路径就可以了 const multer require(multer) const upload multer({ dest: ./public/avataruploads/ }) …...

postman-pre-request-scripts使用

一、场景 二、定义模拟接口 using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SaaS.Framework.DataTransfer; using System.Threading.Tasks;namespace SaaS.KDemo.Api.Controllers {[Route("api/[co…...

uniapp Echart X轴Y轴文字被遮挡怎么办,或未能铺满整个容器

有时候布局太小&#xff0c;使用echarts&#xff0c;x轴y轴文字容易被遮挡&#xff0c;怎么解决这个问题呢&#xff0c;或者是未能铺满整个容器。 方法1&#xff1a; 直接设置 containLabel 字段 options: { grid: { containLabel: true, },} 方法2: 间接设置&#xff0c;但是…...

学习路之PHP--laravel DingoApi

一、安装 1.进入项目目录&#xff0c;执行composer安装命令 composer require dingo/api 如果下载超时&#xff0c;换阿里云源&#xff1a; composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 2.使用以下命令可以发布 API 的配置文件到 confi…...

项目篇——java文档搜索引擎

Java 文档搜索引擎 文章目录 Java 文档搜索引擎一、分词二、完成parser 类2.1、排除非html文件2.2、解析html以下是解析 HTML 标题的方法以下是解析 对应的 URL以下是解析 HTML的正文&#xff1a; 补充&#xff1a;倒序索引 三、实现 index 类3.1、实现索引结构3.2、索引中新增…...

5.2 磁盘CRC32完整性检测

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法&#xff0c;校验算法可以通过计算应用与数据的循环冗余校验&#xff08;CRC&#xff09;检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测&#xff0c;…...

企业内部安全与风控管理图解

企业内部安全说外部安全&#xff0c;企业领导者都非常关注&#xff0c;由于各方面原因&#xff0c;。。。力不从心&#xff0c;妥协&#xff01; 方向&#xff1a; 1、制度 结合企业实情&#xff0c;编制企业安全管理制度 2、硬件 处理常规硬件外观&#xff0c;加壳与锁定、…...

vscode基于cmake安装opencv库

一、安装相关依赖库 首先更新源 sudo apt update安装相关包 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libjasper若是报错&#xff1a;无法定位到 libjasper软件包 则依次执行以下命令 sud…...

Web 器学习笔记(基础)

Filter 过滤器 概念&#xff1a;表示过滤器&#xff0c;是 JavaWeb 三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一 作用&#xff1a;顾名思义可以过滤资源的请求&#xff0c;并实现特殊的需求 Filter 接口及它核心的 doFilter() 方法&#xff08;执行前就是…...

uniapp中vue3使用uni.createSelectorQuery().in(this)报错

因为VUE3中使用setup没有this作用域&#xff0c;所以报错 解决办法&#xff1a;使用getCurrentInstance()方法获取组件实例 import { getCurrentInstance } from vue;const instance getCurrentInstance(); // 获取组件实例 const DOMArr uni.createSelectorQuery().in(ins…...

k8s-部署

1.k8s 集群与部署 更改所有主机名字和解析 k8s1 192.168.25.11 reg.westos.org,habbor 仓库 k8s2 192.168.25.12 master&#xff0c;k8s 集群控制节点 k8s3 192.168.25.13 node&#xff0c;k8s 集群工作节点 k8s4 192.168.25.14 node&#xff0c;k8s 集群工作节点 所有节…...

Arduino驱动MMA7260三轴加速度传感器(惯性测量传感器篇)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 Arduino驱动MMA7260三轴加速度传感器芯片,可以应用到摩托车和汽车放倒报警、遥控航模、游戏手柄、人形机器人跌倒检测、硬盘冲击保护、倾斜度测量等场合。 1...

奇舞周刊第507期:通过 View Transition API 在状态之间添加丰富的过渡动画

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 通过 View Transition API 在状态之间添加丰富的过渡动画 W3C 2023 年度全球技术大会 (TPAC2023) 于今年9月 11 - 15 日召开。W3C CSS 工作组成员 Bramus Van Damme(Google) 为本届…...

如何通过技术变现

技术变现是指将技术转化为实际价值的过程。以下是几种常见的技术变现方式&#xff1a; 软件开发与销售&#xff1a;根据市场需求开发软件&#xff0c;并将其销售给需要的企业或个人。专利许可与授权&#xff1a;将技术成果申请专利&#xff0c;通过专利许可和授权给企业使用&a…...

高效查询大量快递信息,轻松掌握技巧

在如今快节奏的生活中&#xff0c;快递已经成为我们日常不可或缺的一部分。然而&#xff0c;对于一些忙碌的人来说&#xff0c;单个查询每一个快递单号可能会浪费太多时间。因此&#xff0c;我们需要一款可以帮助我们批量查询快递的软件。 在市场上&#xff0c;有很多款专门用于…...

iperf3: error - unable to connect to server: No route to host 但嵌入式Linux设备

起因 需要测试WIFI设置为802.11n制式能否输出40MHZ带宽去做CE认证 需要一台设备WIFI 设置为STA模式 一台设备WIFI设置为AP模式 用STA模式的设备去连接AP模式的设备才能产生40MH带宽 起初用了一台设备做STA模式设备(设备A)来测试没问题了&#xff0c;要换一台设备做STA设备(设备…...

OpenCV自学笔记十七:傅里叶变换

1、Numpy实现傅里叶变换 傅里叶变换&#xff08;Fourier Transform&#xff09;是一种将信号从时域转换到频域的数学变换。它将一个连续或离散的时域信号分解为一组正弦和余弦函数的复合。 在Python中&#xff0c;可以使用NumPy库来实现傅里叶变换。具体步骤如下&#xff1a;…...

Singularity安全性详解:如何在容器中保持用户权限不变的终极指南

Singularity安全性详解&#xff1a;如何在容器中保持用户权限不变的终极指南 【免费下载链接】singularity Singularity has been renamed to Apptainer as part of us moving the project to the Linux Foundation. This repo has been persisted as a snapshot right before …...

TTD与阳狮纠纷,是AI广告革命下的一个切面

文/刀客doc(头条精选作者)01前段时间&#xff0c;海外广告圈最受关注的一场争议&#xff0c;发生在美国阳狮和程序化广告平台 The Trade Desk&#xff08;简称 TTD&#xff09;之间。大概的经过是这样的&#xff0c;3 月中旬的时候&#xff0c;《广告时代》披露&#xff0c;美国…...

Laravel WebSockets终极指南:本地与Redis频道管理器深度对比

Laravel WebSockets终极指南&#xff1a;本地与Redis频道管理器深度对比 【免费下载链接】laravel-websockets Websockets for Laravel. Done right. 项目地址: https://gitcode.com/gh_mirrors/la/laravel-websockets Laravel WebSockets是一款为Laravel框架打造的高效…...

从海思Hi35xx到瑞芯微RV1126:手把手教你用RKMEDIA框架快速移植IPC应用(附RKNN推理集成避坑点)

从海思Hi35xx到瑞芯微RV1126&#xff1a;RKMEDIA框架迁移实战与RKNN集成指南 去年接手一个智能安防项目时&#xff0c;客户突然要求将原本基于海思Hi3516DV300的方案切换到瑞芯微RV1126平台。面对两周内完成算法迁移的"死亡线"&#xff0c;RKMEDIA框架的模块化设计成…...

Ammonite BSP协议详解:如何实现与IDE的无缝集成

Ammonite BSP协议详解&#xff1a;如何实现与IDE的无缝集成 【免费下载链接】Ammonite Scala Scripting 项目地址: https://gitcode.com/gh_mirrors/amm/Ammonite Ammonite作为一款强大的Scala脚本工具&#xff0c;通过BSP&#xff08;Build Server Protocol&#xff09…...

从抓包困境到源码掌控:微信小程序逆向分析与实战解包指南

1. 微信小程序抓包为何越来越难&#xff1f; 最近两年做过微信小程序抓包的开发者应该都深有体会&#xff0c;以前用Charles、Fiddler这类工具轻松就能抓到的数据包&#xff0c;现在越来越难捕获了。我去年11月接的一个图书馆预约系统项目就遇到了这个难题&#xff0c;当时用尽…...

Http4s高级特性:WebSocket、Server-Sent Events与流式处理终极指南

Http4s高级特性&#xff1a;WebSocket、Server-Sent Events与流式处理终极指南 【免费下载链接】http4s A minimal, idiomatic Scala interface for HTTP 项目地址: https://gitcode.com/gh_mirrors/ht/http4s 探索Http4s框架中最强大的实时通信和流式处理特性&#xff…...

Miniconda-Python3.11镜像实测:轻量级环境管理,AI开发更高效

Miniconda-Python3.11镜像实测&#xff1a;轻量级环境管理&#xff0c;AI开发更高效 1. 为什么选择Miniconda-Python3.11 在AI开发领域&#xff0c;Python环境管理一直是个令人头疼的问题。不同项目可能需要不同版本的Python和依赖库&#xff0c;传统的全局安装方式经常导致版…...

Camunda框架实战(十四):外置表单开发与常见问题解析

1. 外置表单开发基础入门 Camunda的外置表单功能让开发者能够完全自定义流程中的用户交互界面。与内置表单相比&#xff0c;外置表单最大的优势在于可以自由设计表单样式和交互逻辑&#xff0c;不受平台限制。我在实际项目中遇到过这样的场景&#xff1a;客户需要在一个采购审批…...

如何深度调试AMD Ryzen系统:SMUDebugTool完整指南与故障排除

如何深度调试AMD Ryzen系统&#xff1a;SMUDebugTool完整指南与故障排除 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...