C#中List的3种排序方法

这篇具有很好参考价值的文章主要介绍了C#中List的3种排序方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

List是C#常用的数组,它较之前的ArryList更加灵活,解决了Arrylist会出现装箱和拆箱的不安全问题,它是一种动态数组,可以存储对象或元素的集合。在处理比多的数据时,对list排序也非常重要,这样可以对数据更加容易的处理。本文将讲述3种list的排序方法。

方法1:Sort方法

这是C#最常用的排序方法,此方法可以让list按升序的方式排列。代码如下:

List<int> numbers = new List<int> {7, 4, 5, 3, 8};
 numbers.Sort();

 

比较简单的升序排序方式可以用它。

方法2:使用比较函数排序

在某些情况下,您可能想要对列表排序按照比较逻辑。在这个场景中,您可以使用比较函数。比较函数使用比较委托定义的,它应该返回一个整数,代表了两个元素相比较的相对顺序。使用这种方法的语法比较函数如下:

List<string> names = new List<string> { "刘玄德", "关羽", "张飞", "赵云","忧郁的蛋" };
names.Sort((x, y) => x.Length.CompareTo(y.Length));
    foreach (var name in names)
    {
      Console.WriteLine(name);
    }

 

输出结果:关羽,张飞,赵云,刘玄德,忧郁的蛋

这个案例主要是安装字符串的长度来比较。

方法3:OrderBy和ThenBy

c#数组list排序的另一种方法是通过使用LINQ方法中的OrderBy和ThenBy 。OrderBy方法可以安装list中的指定元素升序排序,而ThenBy方可以附件排序按升序排序。使用OrderBy和ThenBy的示例如下:

List<Customer> list = new List<Customer>();
list.Add(new Customer { id = 1, name = "刘德华", age = 56, period=40 });
list.Add(new Customer { id = 2, name = "张学友", age = 52, period = 35 });
list.Add(new Customer { id = 3, name = "黎明", age = 58, period = 33 });
list.Add(new Customer { id = 4, name = "郭富城", age = 60, period = 36 });
list.Add(new Customer { id = 5, name = "古天乐", age = 60, period = 30 });
var sortlist = list.OrderBy(o=>o.age).ThenBy(t=>t.period).ToList();
//这是类
 public class Customer
{
        public int id { get; set; }
        public string name { get; set; }
        public int age { get; set; }
        public int period { get; set; }
 }

 

总结

以上介绍了List排序的三种方法,sort、比较函数、orderby和ThenBy。三种方式各有用处,根据你的项目情况来选择,比较单一普通的推荐用第一个,第二种和第三种方法比较复杂的list使用。这三种排序主要是介绍升序排序,倒序排序还有哪些方法呢?欢迎留言。希望本文对你有所收获,本文适合初学者阅读。文章来源地址https://www.toymoban.com/news/detail-544884.html

到了这里,关于C#中List的3种排序方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# List与HashSet的contains()方法查询速度比较

    List 和HashSet同时查询40万条数据,谁的效率更高?   HashSet 大数据量很大时,由于HashSet对存入值进行hash处理,所以在比对是否存在时会非常快

    2024年02月11日
    浏览(42)
  • C# List 详解二

    目录 5.Clear()     6.Contains(T)     7.ConvertAll(Converter)    ,toutput 8.CopyTo(Int32, T[], Int32, Int32)     9.CopyTo(T[])     10.CopyTo(T[], Int32)     C# List 文档(一) 1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly(),4.BinarySearch(T), C# List 文档(二) 5.Clear(),6.Contains(T),7.ConvertAll(Converter),8.CopyT

    2024年02月16日
    浏览(44)
  • c# list集合克隆

    在C#中,List集合是一种泛型集合,可以存储任何类型的对象。克隆一个List集合可以通过以下几种方式实现: 使用List的构造函数 使用List的构造函数可以创建一个新的List对象,并将原始List中的元素复制到新List中。例如: 在上面的代码中, list2 是一个新的List对象,它使用

    2024年02月06日
    浏览(40)
  • C# 自定义List

    目录 一、需求 二、List 常用功能 三、自定义List 四、测试 1.Add 2.Clear 3.Contains 4.IndexOf 5.Insert 6.Remove 7.RemoveAt 结束 微软官方的 List 在命名空间 System.Collections.Generic 中,在平时的开发中 List 用的特别多,在用的时候我们基本不会考虑在 List 中内部是怎么写的,于是,我也写了一

    2023年04月24日
    浏览(37)
  • C# List 详解一

    目录 一、概述 二、构造函数 1.List()   2.List(IEnumerable)     3.List(Int32)     三、属性 1.Capacity     2.Count     3.Item[Int32]     四、方法 1.Add(T)     2.AddRange(IEnumerable)     3.AsReadOnly()     4.BinarySearch(T) C# List 文档(一) 1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly(),4.BinarySearch(

    2024年02月16日
    浏览(42)
  • C# List 详解五

    目录 26.GetType()     27.IndexOf(T)     28.IndexOf(T, Int32)     29.IndexOf(T, Int32, Int32)     30.Insert(Int32, T)     31.InsertRange(Int32, IEnumerable)     32.LastIndexOf(T)     33.LastIndexOf(T, Int32)     34.LastIndexOf(T, Int32, Int32)     C# List 文档(一) 1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly(),4.Bina

    2024年02月16日
    浏览(50)
  • C# list<T>去重

    List object is int object is decimal object is char object is bool object is string List List 集合里有三条记录,其中两条重复。 使用Distinct后,还有三条,说明distinct失败 原因是,引用类型即使属性一样,引用地址是不一样的。 只能用别的方式去避免。

    2024年02月05日
    浏览(56)
  • c# List<T>.Aggregate

    ListT.Aggregate 方法的定义: 参数解析如下: TAccumulate seed :初始累积值,也是累积的起始值(默认值)。 FuncTAccumulate, T, TAccumulate func :累积计算的逻辑函数,接受两个参数,第一个参数是当前的累积值,第二个参数是集合中的元素,返回一个新的累积值。 seed :初始累积值是一

    2024年02月12日
    浏览(39)
  • C# 给List编个序号

    给List编个号

    2024年02月07日
    浏览(52)
  • C# List 复制之深浅拷贝

    声明类 执行上述方法, 修改list1 中的属性值, 发现list2 的属性值会跟着变化, list3 的属性值不发生变化; 由于进行的是浅拷贝,所以直接将list1的内容复制给了list2,虽然list1和list2所在的地址不一样,但是两个list存储的对象仍然是相同的(因为把list1复制到list2时,浅拷贝复制的

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包