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

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第一种排序方法 lambda
            var s1 = stuList.OrderBy(p => p.Chinese).ToList();
            //第二种方法语法
            var s1 = from s in stuList
                     orderby s.Chinese ascending
                    select s;
           //其中ascending为默认升序,deascending为降序

根据多个内容综合排序:

要求先根据数学成绩进行排序,在根据语文进行排序,都是升序
//第一种方法
var s1 = stuList.OrderBy(p => p.Math).ThenBy(p=>p.Chinese).ToList();
//orderby后面可以无限跟Thenby对排序后的数据再进行排序

//第二种方法linq语法
var s1 = from s in stuList
   orderby s.Math, s.Chinese ascending
   select s;
orderby 后面跟两个属性,第一个s.math,先根据他进行排序,再根据s.chinese进行排序

参考文献:

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

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


http://www.kler.cn/a/132662.html

相关文章:

  • 微知-DOCA ARGP参数模块的相关接口和用法(config单元、params单元,argp pipe line,回调)
  • uniapp luch-request 使用教程+响应对象创建
  • 【Mysql】Mysql函数(上)
  • Python爬虫下载新闻,Flask展现新闻(2)
  • 搭建es环境
  • latex中,两个相邻的表格,怎样留一定的空白
  • 使用FP8加速PyTorch训练
  • 2.2 调用星火大模型的API
  • 对产品实现汇率换算服务(将两个CompletableFuture对象整合起来,无论它们是否存在依赖)
  • 下厨房网站月度最佳栏目菜谱数据获取及分析
  • ZHUTI主提2024春夏 聆听「宁静的声音」
  • Javaweb之Vue指令案例的详细解析
  • 单例模式(常用)
  • The ultimate UI kit and design system for Figma 组件库下载
  • Flume学习笔记(2)—— Flume进阶
  • MSYS2介绍及工具安装
  • 新的开始,不断学习
  • 阿里AoneFlow分支管理
  • SVM之SVR参数详解以及调参
  • C语言开发者的利器:gcc编译命令指南
  • iOS 添加震动效果
  • Linux - 驱动开发 - RNG框架
  • quartz笔记
  • 【18年扬大真题】定义一个类Student记录学生计算机课程的成绩。要求使用静态成员变量或静态成员函数计算全班学生计算机课程的总成绩和平均成绩
  • FDM(傅里叶分解)
  • 电子眼与无人机在城市安防中的协同应用研究