C# List<>.sort 排序【转载】

本文介绍了如何使用代理方法对List中的对象进行排序,包括编写对象比较的方法,并将其委托给List的Sort方法。通过实例展示了如何实现并应用此方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:http://hi.baidu.com/lifangfang1218/blog/item/aa49002362f76bf9d6cae244.html

第三种方法需要编写一个对象排序比较的方法,对List中的元素对象没有特殊的要求,但在比较方法中需要实现对象比较规则,这个方法实现后,就可以把这方 名字作为参数委托给List的Sort方法,Sort方法在排序时会执行这个方法对List中的对象进行比较,详细可参照下面的代码。对List中元素我 们还使用上面的SortTestObj2类对象。

  1.         staticvoid Main(string[] args)
  2.          {
  3.             //利用代理方法进行排序
  4.              DelegateSort();
  5.          }
  6.         
  7.         //Sort(Comparison<(Of <(T>)>))方法排序,这中方法需要先编写一个对象比较的方法,然后
  8.         //把这个比较方法委托给List的Sort方法。
  9.         //对象比较的方法
  10.         privatestaticint SortTestObj2Compare(SortTestObj2 obj1, SortTestObj2 obj2)
  11.          {
  12.             int res = 0;
  13.             if ((obj1 == null) && (obj2 == null))
  14.              {
  15.                 return 0;
  16.              }
  17.             elseif ((obj1 != null) && (obj2 == null))
  18.              {
  19.                 return 1;
  20.              }
  21.             elseif ((obj1 == null) && (obj2 != null))
  22.              {
  23.                 return -1;
  24.              }
  25.             if (obj1.Code > obj2.Code)
  26.              {
  27.                  res = 1;
  28.              }
  29.             elseif (obj1.Code < obj2.Code)
  30.              {
  31.                  res = -1;
  32.              }
  33.       //如果是时间类型的比较,我现在写的是倒序,如果想正序把1改为-1,-1改为1
  34.        if (DateTime.Parse(obj1.MailDate).CompareTo(DateTime.Parse(obj2.MailDate))>0)
                {
                res = -1;
                    }
                else if (DateTime.Parse(obj1.MailDate).CompareTo(DateTime.Parse(obj2.MailDate)) < 0)
                {
                res = 1;
                 }
  35.        
  36.    //如果是string类型的比较,我现在写的是倒序,如果想正序把1改为-1,-1改为1
  37. //if (obj1.MailDate.CompareTo(obj2.MailDate) > 0)
                //    {
                //    res = -1;
                //    }
                //else if (obj1.MailDate.CompareTo(obj2.MailDate) < 0)
                //    {
                //    res = 1;
                //    }
            
  38.             return res;
  39.          }
  40.         //List的委托排序
  41.         privatestaticvoid DelegateSort()
  42.          {
  43.              List<SortTestObj2> objLst = new List<SortTestObj2>();
  44.              SortTestObj2 obj1 = new SortTestObj2();
  45.              obj1.Code = 3;
  46.              obj1.Name = "TestObj1";
  47.              objLst.Add(obj1);
  48.              SortTestObj2 obj2 = new SortTestObj2();
  49.              obj2.Code = 2;
  50.              obj2.Name = "TestObj2";
  51.              objLst.Add(obj2);
  52.              SortTestObj2 obj3 = new SortTestObj2();
  53.              obj3.Code = 4;
  54.              obj3.Name = "TestObj4";
  55.              objLst.Add(obj3);
  56.              SortTestObj2 obj4 = new SortTestObj2();
  57.              obj4.Code = 1;
  58.              obj4.Name = "TestObj3";
  59.              objLst.Add(obj4);
  60.              SortTestObj2 obj5 = new SortTestObj2();
  61.              obj5.Code = 6;
  62.              obj5.Name = "TestObj6";
  63.              objLst.Add(obj5);
  64.              objLst.Sort(SortTestObj2Compare);
  65.              Console.WriteLine("委托方法排序的结果");
  66.             foreach (SortTestObj2 item in objLst)
  67.              {
  68.                  Console.WriteLine("Code=" + item.Code + ",Name=" + item.Name);
  69.              }
  70.          }

转载于:https://www.cnblogs.com/alexzp/archive/2012/02/17/2355257.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值