zoukankan      html  css  js  c++  java
  • C# List<>.sort 排序【转载】

    转载: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.          }
  • 相关阅读:
    eclipse code templates 设置(eclipse注释模版配置)
    kettle 程序调用执行ktr转换示例代码
    JQuery学习笔记
    获取工程路径(jar和普通文件结构通用) java
    java 获取jar包路径,遍历jar包
    百度跨域ajax
    eclipse Wtp在线安装
    PropertiesHelper
    java base64/jQuery Base64
    Eclipse中,打开文件所在文件夹的插件,及设置
  • 原文地址:https://www.cnblogs.com/alexzp/p/2355257.html
Copyright © 2011-2022 走看看