C#多条件排序OrderBy、ThenBy

方法和效果 

 有多个排序条件,其实不用单独自己写排序方法的,C#内置了排序方法:

引用命名空间System.Linq

正向排序的方法:OrderBy首要条件;ThenBy次要条件,可以连续多个使用
同理,逆向排序对应的方法是OrderByDescending、ThenByDescending
正向排序和逆向排序可以交叉使用

完整代码

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class Test01 : MonoBehaviour
{
    public class student
    {
        public int id { get; set; }
        public string name { get; set; }
        public string hometown { get; set; }

        public student(int id, string name, string hometown)
        {
            this.id = id;
            this.name = name;
            this.hometown = hometown;
        }

        public override string ToString()
        {
            return $"{this.id}  {this.name}  {this.hometown}";
        }
    }

    // Start is called before the first frame update
    List<student> list = new List<student>()
    {
        new student(1, "1", "3"),
        new student(1, "1", "2"),
        new student(1, "2", "1"),
        new student(2, "2", "2"),
        new student(3, "2", "1"),
        new student(2, "3", "1"),
        new student(1, "3", "3"),
    };

    void PrintList()
    {
        foreach (var VARIABLE in list)
        {
            Debug.Log(VARIABLE.ToString());
        }

        Debug.LogWarning("--------------------------");
    }

    void Start()
    {
        PrintList();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            //依次安装id,name,hometown正向排序
            list = list.OrderBy(x => x.id).ThenBy(x => x.name).ThenBy(x => x.hometown).ToList();
            ;
            PrintList();
        }

        if (Input.GetKeyDown(KeyCode.S))
        {
            //依次安装id,name,hometown反向排序
            list = list.OrderByDescending(x => x.id).ThenByDescending(x => x.name).ThenByDescending(x => x.hometown).ToList();
            ;
            PrintList();
        }
    }
}

参考连接

 Queryable.ThenBy Method (System.Linq) | Microsoft Learn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/277910.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探秘交互设计:深入了解五大核心维度!

交互式设计是用户体验&#xff08;UX&#xff09;设计的重要组成部分。本文将解释什么是交互设计&#xff0c;并分享一些有用的交互设计模型&#xff0c;并简要描述交互设计师通常做什么。 如何解释交互设计 交互式设计可以用一个简单的术语来理解&#xff1a;它是用户和产品…

新火种AI|AI正在让汽车成为“消费电子产品”

作者&#xff1a;一号 编辑&#xff1a;小迪 AI正在让汽车产品消费电子化 12月28日&#xff0c;铺垫许久的小米汽车首款产品——小米SU7正式在北京亮相。命里注定要造“电车”的雷军&#xff0c;在台上重磅发布了小米的五大自研核心技术。在车型设计、新能源技术以及智能科技…

Python中使用SQLite数据库的方法2-1

1 SQLite数据库简介 SQLite数据库是一种轻量级的、优秀的开源关系型数据库。它使用Python的标准库实现&#xff0c;并且存储数据库在普通文件中。这些文件在不同机器和操作系统之间是可以移植的&#xff0c;在很多安卓手机中&#xff0c;也是把SQLite作为嵌入数据库使用。 2 …

暗光增强——Zero-DCE网络推理测试

目录 一、Zero-DCE方法1.1 网络优点1.2 网络适用场景1.3 网络不适用场景 二、源码包三、测试四、测试结果五、推理速度六、总结 一、Zero-DCE方法 Zero-DCE&#xff08;Zero-Reference Deep Curve Estimation&#xff09;是一种用于低光照增强的网络。 1.1 网络优点 无需参考…

昇腾910平台安装驱动、固件、CANN toolkit、pytorch

本文使用的昇腾910平台操作系统是openEuler&#xff0c;之前没了解过&#xff0c;不过暂时感觉用起来和centOS差不多。系统架构是ARM&#xff0c;安装包基本都是带aarch64字样&#xff0c;注意和x86_64区别开&#xff0c;别下错了。 安装依赖 cmake 通过yum安装的cmake版本较…

华为发布《智能世界2030》思维导图笔记

华为发布《智能世界2030》思维导图笔记

vmware虚拟机中Nat、桥接模式和仅主机的差别

NAT 在NAT模式下&#xff0c;主机3是Kali和Win两个操作系统的宿主机&#xff0c;那么Kali和Win可以连接到外网&#xff0c;也可以和主机3进行互联&#xff0c;但是主机1和主机2不能连接到Kali和Win。 桥接 在桥接模式下&#xff0c;主机3是Kali和Win两个操作系统的宿主机&…

Mybatis插件入门

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

全国行政区划数据集(2011-2020年)

全国行政区划数据集&#xff08;2011-2020年&#xff09; 行政区划数据是基础地理信息数据&#xff0c;是按各国行政单元进行的地理划分。不同国家的行政级别称呼不同&#xff0c;例如某些国家称第一级行政单位为省&#xff0c;某一些国家称之为州等。 该数据集整理了2011-202…

Python漂浮爱心完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…

Linux 内核学习笔记: hlist 的理解

前言 最近阅读 Linux 内核时&#xff0c;遇到了 hlist&#xff0c;这个 hlist 用起来像是普通的链表&#xff0c;但是为何使用 hlist&#xff0c;hlist 是怎么工作的&#xff1f; 相关代码 hlist_add_head(&clk->clks_node, &core->clks); /*** clk_core_link_…

vue如何实现局部刷新?

应用场景&#xff1a; 比如你要切换tap栏实现刷新下面form表单等&#xff0c;相当于刷新页面。 如何使用如下&#xff1a; <div v-if"isReloadData"> 比如你想刷新那个位置就把 v-if"isReloadData"写到那个标签上 </div> 在data中定义刷新标…

【adb】--- win10 配置 adb环境 超详细 (持续更新中)

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【adb】--- win10 配置 adb环境 超详细 &…

【C++】引用详解

前言 在学习C语言时&#xff0c;我们通常会遇到两个数交换的问题&#xff0c;为了实现这一功能&#xff0c;我们会编写一个经典的Swap函数&#xff0c;如下所示&#xff1a; void Swap(int *a, int *b) {int tmp *a;*a *b;*b tmp; } 然而&#xff0c;这个Swap函数看起来可…

软件测试/测试开发丨Windows Appium环境搭建

windows 版本 Appium 环境搭建 安装 nodejs 下载.msi文件 https://nodejs.org/en/download/ 注意&#xff1a; 1、下载12.*版本双击安装即可。 2、无须配置环境变量,直接重启一个 cmd 输入下面的命令&#xff0c;能够查看这两个版本号即安装成功。 安装 appium desktop 直…

rax3000m刷openwrt固件

rax3000m刷机过程&#xff08;nand版本&#xff09; 刷机准备文件https://www.123pan.com/s/X5m9-6Ynj.html提取码:VtBW 接线关系&#xff1a;路由器lan口接电脑 1.上传配置开启ssh的配置文件&#xff08;登录路由器后台管理界面在找到配置管理&#xff0c;上传配置文件rax3…

k8s的陈述式资源管理(命令行操作)

&#xff08;一&#xff09;k8s的陈述式资源管理 1、命令行&#xff1a;kubectl命令行工具——用于一般的资源管理 &#xff08;1&#xff09;优点&#xff1a;90%以上ce场景都可以满足 &#xff08;2&#xff09;特点&#xff1a;对资源的增、删、查比较方便&#xff0c;对…

与擎创科技共建一体化“数智”运维体系,实现数字化转型

小窗滴滴小编获取最新版公司简介 前言&#xff1a; 哈喽大家好&#xff0c;最近分享的互联网IT热讯大家都挺喜欢&#xff0c;小编看着数据着实开心&#xff0c;感谢大家支持&#xff0c;小编会继续给大家推送。 新岁即将启封&#xff0c;我们一年一期的运维干货年末大讲也要…

Linux磁盘管理与文件系统

目录 前言 一、磁盘基础 1、磁盘的物理结构 2、磁盘的数据结构 3、磁盘存储容量 4、硬盘接口类型 二、磁盘分区 1、磁盘分区的优缺点 2、磁盘两种分区方式 2.1 MBR分区 2.2 GPT分区(了解) 三、管理磁盘分区的工具 1、fdisk 2、blkid 3、free 4、mkfs 5、mkswa…

elasticsearch系列四:集群常规运维

概述 在使用es中如果遇到了集群不可写入或者部分索引状态unassigned&#xff0c;明明写入了很多数据但是查不到等等系列问题该怎么办呢&#xff1f;咱们今天一起看下常用运维命令。 案例 起初我们es性能还跟得上&#xff0c;随着业务发展壮大&#xff0c;发现查询性能越来越不…