iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中有哪些List排序方法
  • 522
分享到

C#中有哪些List排序方法

2023-06-17 22:06:52 522人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关C#中有哪些List排序方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ArrayList arrayList;最重要的是:继承IComparer<T&g

今天就跟大家聊聊有关C#中有哪些List排序方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

ArrayList arrayList;

最重要的是:继承IComparer<T>接口,实现int IComparer<T>.Compare(T t1, T t2)方法。

代码如下:

/// <summary>  /// 继承IComparer<T>接口,实现同一自定义类型 对象比较  /// </summary>  /// <typeparam name="T">T为泛用类型</typeparam>  public class Reverser<T> : IComparer<T>  ...{  private Type type = null;  private ReverserInfo info;   /// <summary>  /// 构造函数  /// </summary>  /// <param name="type">进行比较的类类型</param>  /// <param name="name">进行比较对象的属性名称</param>  /// <param name="direction">比较方向(升序/降序)</param>  public Reverser(Type type, string name, ReverserInfo.Direction direction)  ...{  this.type = type;  this.info.name = name;  if (direction != ReverserInfo.Direction.ASC)  this.info.direction = direction;  }   /// <summary>  /// 构造函数  /// </summary>  /// <param name="className">进行比较的类名称</param>  /// <param name="name">进行比较对象的属性名称</param>  /// <param name="direction">比较方向(升序/降序)</param>  public Reverser(string className, string name, ReverserInfo.Direction direction) ...{  try ...{  this.type = Type.GetType(className, true);  this.info.name = name;  this.info.direction = direction;  }  catch (Exception e)...{  throw new Exception(e.Message);  }  }   /// <summary>  /// 构造函数  /// </summary>  /// <param name="t">进行比较的类型的实例</param>  /// <param name="name">进行比较对象的属性名称</param>  /// <param name="direction">比较方向(升序/降序)</param>  public Reverser(T t, string name, ReverserInfo.Direction direction)  ...{  this.type = t.GetType();  this.info.name = name;  this.info.direction = direction;  }   //必须!实现IComparer<T>的比较方法。  int IComparer<T>.Compare(T t1, T t2)  ...{  object x = this.type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t1, null);  object y = this.type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t2, null);  if (this.info.direction != ReverserInfo.Direction.ASC)  Swap(ref x, ref y);  return (new CaseInsensitiveComparer()).Compare(x, y);  }   //交换操作数  private void Swap(ref object x, ref object y)  ...{  object temp = null;  temp = x;  x = y;  y = temp;  }  }   /// <summary>  /// 对象比较时使用的信息类  /// </summary>  public struct ReverserInfo  ...{  /// <summary>  /// 比较的方向,如下:  /// ASC:升序  /// DESC:降序  /// </summary>  public enum Direction  ...{  ASC = 0,  DESC,  };   public enum Target  ...{  CUSTOMER = 0,  FORM,  FIELD,  SERVER,  };   public string name;  public Direction direction;  public Target target;  }

上面主要是运用了C#的反射 和 Framework中的排序算法

像上面那样实现接口后,就可以使用List<T>进行升序/降序 排序了。

测试代码如下:

using System;  using System.Collections.Generic;  using System.Collections;  using System.Reflection;  using System.Text;   namespace List_T_SortTest_u_2  ...{

测试Reverser代码段#region 测试Reverser<T>代码段

/// <summary>  /// 实体类User,测试用  /// </summary>  public class User  ...{  protected string _name;  protected int _age;  protected string _address;   public User(string name, int age, string address)  ...{  this._name = name;  this._age = age;  this._address = address;  }   public string Name  ...{  get ...{ return _name; }  set ...{ _name = value; }  }   public int Age  ...{  get ...{ return _age; }  set ...{ _age = value; }  }   public string Address  ...{  get ...{ return _address; }  set ...{ _address = value; }  }  }   /// <summary>  /// 主程序类(启动类),测试用  /// </summary>  class Program  ...{  static void Main(string[] args)  ...{  List<User> userList = new List<User>();  User user;   user = new User("Wang", 21, "ShenYang");  userList.Add(user);  user = new User("Yan", 27, "JinZhou");  userList.Add(user);  user = new User("Liu", 26, "BeiJing");  userList.Add(user);  user = new User("Zhao", 30, "ChaoYang");  userList.Add(user);  user = new User("Yang", 27, "FuXin");  userList.Add(user);   //for (int i = 0; i < ar.Count; i++ )  //    ;  Console.Write("Name     ");  Console.Write("Age      ");  Console.Write("Address  " + " " + " ");  Console.WriteLine("-----------------------");  foreach (User u in userList)  ...{  Console.Write(u.Name + "    ");  Console.Write(u.Age + "    ");  Console.Write(u.Address + "    " + " ");  }  Console.WriteLine();   Reverser<User> reverser = new Reverser<User>(user.GetType(), "Name", ReverserInfo.Direction.DESC);  userList.Sort(reverser);  Console.WriteLine();  foreach (User u in userList)  ...{  Console.Write(u.Name + "    ");  Console.Write(u.Age + "    ");  Console.Write(u.Address + "    " + " ");  }  Console.WriteLine();   reverser = new Reverser<User>(user.GetType(), "Age", ReverserInfo.Direction.ASC);  userList.Sort(reverser);  Console.WriteLine();  foreach (User u in userList)  ...{  Console.Write(u.Name + "    ");  Console.Write(u.Age + "    ");  Console.Write(u.Address + "    " + " ");  }   Console.Read();  }  }  #endregion  }

看完上述内容,你们对C#中有哪些List排序方法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: C#中有哪些List排序方法

本文链接: https://www.lsjlt.com/news/293568.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中有哪些List排序方法
    今天就跟大家聊聊有关C#中有哪些List排序方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ArrayList arrayList;最重要的是:继承IComparer<T&g...
    99+
    2023-06-17
  • Java中Collections.sort对List排序的方法有哪些
    本篇内容介绍了“Java中Collections.sort对List排序的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Col...
    99+
    2023-06-21
  • C#中有哪些排序算法
    这期内容当中小编将会给大家带来有关C#中有哪些排序算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#排序算法之冒泡排序   一下是C#开发出冒泡排序算法。希望能为C#语言的学习者带...
    99+
    2023-06-17
  • c语言中有哪些排序的方法
    这期内容当中小编将会给大家带来有关c语言中有哪些排序的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、选择排序-简单选择排序选择排序是最简单的一种基于O(n2)时间复杂度的排序算法,基本思想是从i=...
    99+
    2023-06-20
  • python中有哪些排序方法
    这篇文章主要介绍python中有哪些排序方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;...
    99+
    2023-06-14
  • C#排序算法有哪些
    C#排序算法有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#排序算法一、冒泡排序(Bubble)using System;   ...
    99+
    2023-06-17
  • Java中的排序方法有哪些
    今天就跟大家聊聊有关Java中的排序方法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。直接插入排序<code class="language-java hljs...
    99+
    2023-05-31
    java 排序 ava
  • python中有哪些排序的方法
    python中有哪些排序的方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的...
    99+
    2023-06-14
  • pandas排序有哪些方法
    pandas排序的方法有:1、使用sort_values()方法;2、使用sort_index()方法;3、使用order()方法;4、使用sort()方法;5、使用nlargest()和nsmallest()方法等。详细介绍:1、使用so...
    99+
    2023-11-22
    Pandas 排序
  • java排序方法有哪些
    java中的排序方法有:1.选择排序;2.希尔排序;3.插入排序;4.冒泡排序;5.快速排序;java中的排序方法有以下几种选择排序选择排序算法其原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待...
    99+
    2024-04-02
  • javascript中有哪些数组排序方法
    今天就跟大家聊聊有关javascript中有哪些数组排序方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。javascript排序方法:1、sort()方法,用于对数组的元素进行排序...
    99+
    2023-06-15
  • java中ArrayList的排序方法有哪些
    在Java中,ArrayList类提供了多种排序方法,可以根据不同的需求选择适合的排序方法。以下是常用的ArrayList排序方法:...
    99+
    2023-08-17
    java ArrayList
  • C++数组排序算法有哪些
    本篇内容主要讲解“C++数组排序算法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++数组排序算法有哪些”吧!三种简单排序1:选择排序(从小到达)从第一...
    99+
    2024-04-02
  • MySQL排序的方法有哪些
    MySQL排序的方法有以下几种:1. 使用ORDER BY子句对结果进行排序。可以根据指定的列进行升序或降序排序。例如:SELEC&...
    99+
    2023-09-15
    MySQL
  • php中常用的排序方法有哪些
    这篇文章主要讲解了“php中常用的排序方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中常用的排序方法有哪些”吧!冒泡排序冒泡排序是PHP中最经典的排序算法之一。该算法通过遍历...
    99+
    2023-07-05
  • MongoDB中数组排序的方法有哪些
    在MongoDB中,可以使用以下方法对数组进行排序: 使用$sort操作符对数组元素进行排序,例如: db.collection...
    99+
    2024-04-19
    MongoDB
  • Java中List排序的3种方法
    在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要按照用户的年龄从大到小进行排序,这个时候,我们就需要对 List...
    99+
    2023-08-31
    java list 开发语言
  • MySQ中排序方式有哪些
    这篇文章给大家分享的是有关MySQ中排序方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ORDER BY 字段名 升序/降序,相信进来的朋友都认识这个排序语句,但遇到一些...
    99+
    2024-04-02
  • c++常用的排序算法有哪些
    小编给大家分享一下c++常用的排序算法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c++常用的排序算法//选择排序法SelectionSort(int a...
    99+
    2023-06-03
  • JavaScript中有哪些排序算法
    这期内容当中小编将会给大家带来有关JavaScript中有哪些排序算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。说明&middot;  每个浏览器测...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作