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

C#学习相关系列之Linq常用方法---排序(一)

一、构建数据

    public class Student_1{public int ID { get; set; }public string Name { get; set; }public int Chinese { get; set; }public int Math { get; set; }public int English { get; set; }public override string ToString(){return string.Format("ID:{0},Name:{1},Chinese:{2},Math:{3},English:{4}", ID, Name, Chinese, Math, English);}}

构建一个student的数据类型,其中包括ID、name等属性。在该类内对tostring()方法进行了重写,通过tostring()可以对类内数据进行输出。

        static void Main(string[] args){List<Student_1> stuList = new List<Student_1>(){new Student_1(){ID=1,Name="John",Chinese=92,Math=88,English=92},new Student_1(){ID=2,Name="Mary",Chinese=87,Math=94,English=82},new Student_1(){ID=3,Name="KangKang",Chinese=89,Math=91,English=96},new Student_1(){ID=4,Name="Maria",Chinese=88,Math=65,English=94},new Student_1(){ID=5,Name="Ben",Chinese=70,Math=91,English=82},};//未排序时foreach (var item in stuList){Console.WriteLine(item.ToString());}Console.Read(); }

未排序时的输出结果为:

二、sort排序方法

            //根据Chinese进行排序//第一种方法stuList.Sort((s1, s2) =>s1.Chinese.CompareTo(s2.Chinese));//前一个比后一个不交换,反之则交换,正序stuList.Sort((s1, s2) => s2.Chinese.CompareTo(s1.Chinese));//前一个比后一个不交换,反之则交换,逆序//第二种方法stuList.Sort((s1, s2) =>{if (s1.Chinese > s2.Chinese){return 1;}else{return 0;}}); //含义也为如果s1>s2则交换,反之不交换 正序

关于compareto的用法:

var m=a.compare(b)
//a与b进行比较,如果a>b 则m=1;
a<b 则m=-1;
a=b 则m=0;

三、orderby排序

            //orderby第一种排序方法 lambdavar s1 = stuList.OrderBy(p => p.Chinese).ToList();//第二种方法语法var s1 = from s in stuListorderby s.Chinese ascendingselect s;//其中ascending为默认升序,deascending为降序

根据多个内容综合排序:

要求先根据数学成绩进行排序,在根据语文进行排序,都是升序
//第一种方法
var s1 = stuList.OrderBy(p => p.Math).ThenBy(p=>p.Chinese).ToList();
//orderby后面可以无限跟Thenby对排序后的数据再进行排序//第二种方法linq语法
var s1 = from s in stuListorderby s.Math, s.Chinese ascendingselect s;
orderby 后面跟两个属性,第一个s.math,先根据他进行排序,再根据s.chinese进行排序

参考文献:

C#中sort排序相关用法介绍_c# sort-CSDN博客

C#系 常用的LinQ查询表达式之orderby_yy763496668的博客-CSDN博客

http://www.lryc.cn/news/234907.html

相关文章:

  • Android Proguard混淆
  • MySQL 1、初识数据库
  • H5ke11--3介绍本地,会话存储
  • 技术分享 | 如何写好测试用例?
  • quarkus的一些注解1
  • 初学Redis(Redis的启动以及字符串String)
  • C++ opencv基本用法【学习笔记(九)】
  • 理财和银保区别
  • 一文浅入Springboot+mybatis-plus+actuator+Prometheus+Grafana+Swagger2.9.2开发运维一体化
  • 【日常】爬虫技巧进阶:textarea的value修改与提交问题(以智谱清言为例)
  • C++知识点总结(6):高精度乘法真题代码
  • Polygon zkEVM的Dragon Fruit和Inca Berry升级
  • 【计算机网络学习之路】网络基础1
  • HTTP/2.0协议详解
  • Python中的Random模块详解:生成随机数与高级应用
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • 【设计一个缓存--针对各种类型的缓存】
  • Django部署时静态文件配置的坑
  • Android---网络编程优化
  • 《算法通关村——不简单的字符串转换问题》
  • 给VSCode插上一双AI的翅膀
  • 2023年亚太杯数学建模思路 - 案例:异常检测
  • 机器学习的医疗乳腺癌数据的乳腺癌疾病预测
  • 解析:什么是生成式AI?与其他类型的AI有何不同?
  • 国产化项目改造:使用达梦数据库和东方通组件部署,前后端分离框架
  • Nginx实现负载均衡
  • SpringCloud 2022有哪些变化
  • 如何快速本地搭建悟空CRM结合内网穿透工具高效远程办公
  • Docker打包Python项目
  • 【Java并发编程一】并发与并行