首页 > 编程语言 >C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending

C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending

时间:2024-06-20 16:30:43浏览次数:9  
标签:Sort OrderBy Name Age Student 集合 new public

C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、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;如果你不想改变原始列表的顺序,而是想得到一个新的有序列表,使用 OrderByOrderByDescending

标签:Sort,OrderBy,Name,Age,Student,集合,new,public
From: https://blog.csdn.net/qq_39427511/article/details/139815743

相关文章

  • Map集合put元素的底层代码分析
    Map集合put元素的底层代码分析1.HashMap集合put元素时的过程分析Map接口的实现类有HashMap、TreeMap、LinkedHashMapHashTable等。底部的数据结构:HashMap:数组为基础数组元素使用地址指向的方式挂着链表和红黑树LinkedHashMap:是HashMap的子类底层仍然是数组+链表......
  • DEMO_02:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序
    /***考核点:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序*<p>*题目:*1.使用while循环获取20个五位数随机数并打印;*2.遍历20个数,筛选出随机数中3的倍数,并统计个数;*3.符合2的数中,找出五位数中3的倍数和位置*4.符合2的数中,把这五位数......
  • 《面向对象》作业六集合与容器
    2-1在Java中,()类可用于创建链表数据结构的对象A.LinkedListB.ArrayListC.CollectionD.HashMap答案正确:2分2-2分数2作者邱颖豫单位许昌学院要想保存具有映射关系的数据,可以使用以下哪些集合:A.ArrayList、LinkedListB.HashSet、TreeSetC.Tree......
  • DEMO_01:List数据存储,回调函数,集合转字符串,元素去重
    *题目:*1.构建属性结构List<DemoNode>data,根据本包的data.png中数据结构图将数据存入data中(字就是nodeName)*2.将树形结构List<DemoNode>里面的元素全部遍历出来存放到List<String>list中,输出结果转换成字符串:粉粉碎机被粉碎机粉碎了怎么办*3.将list里元素去重后......
  • Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Port
    Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Portainer、MongoDB......) 精选 原创CodeDevMaster2022-11-1608:42:24博主文章分类:Docker©著作权文章标签dockermysqlNginxNacosMQ文章分类Docker云计算yyds干货盘点 Docker部署......
  • Postman 集合变量使用详解
    前言作为一名测试工程师,在API测试中,Postman是一款强大的工具。集合变量是Postman中的重要功能,能够让测试更加灵活、高效。本文将详细介绍Postman集合变量的定义、使用和管理方法,帮助您更好地掌握这项技能。什么是集合变量集合变量是定义在Postman集合(Collection)范围内......
  • Python 3 list sort All In One
    Python3listsortAllInOnePythonsortfunctionListsortlist.sort(key=None,reverse=False)sort()函数用于对原列表进行排序,如果指定参数,则使用指定的比较函数进行比较。key:主要是用来指定进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,......
  • JUC并发编程第十四章——线程安全集合类
    1 并发集合1.1 线程安全集合分类a.遗留的线程安全集合遗留的线程安全集合如Hashtable,Vectorb.使用Collections装饰的线程安全集合使用Collections装饰的线程安全集合,如:Collections.synchronizedCollectionCollections.synchronizedListCollections.synchroni......
  • NumPy 双曲函数与集合操作详解
    NumPy双曲函数NumPy提供了sinh()、cosh()和tanh()等ufunc,它们接受弧度值并生成相应的双曲正弦、双曲余弦和双曲正切值。示例:importnumpyasnpx=np.sinh(np.pi/2)print(x)示例找到数组arr中所有值的双曲余弦值:importnumpyasnparr=np.array([n......
  • 好用的库函数,qsort函数大详解(干货满满!)(进阶)
    前言:  小编在上一篇文章说了这一篇将要写qsort函数的模拟实现,那么废话不多说,现在开始进入今天的代码之旅喽!目录:1.qsort函数的模拟实现的逻辑和思路2.qsort函数模拟实现的代码实现3.代码展示1.qsort函数的模拟实现的逻辑和思路  读者朋友们是否还记得小编之前说过......