C# List排序Sort

來源:互聯網
上載者:User

List<T>類可以使用Sort()方法對元素排序。

Sort()方法定義了幾個重載方法,分別是
  public void List<T>.Sort(),不帶有任何參數的Sort方法
  public void List<T>.Sort(Comparison<T>),帶有比較代理方法參數的Sort方法  
  public void List<T>.Sort(IComparer<T>), 帶有比較子參數的Sort方法 
  public void List<T>.Sort(Int32,Int32,IComparer<T>),帶有比較起參數,可以指定排序範圍的Sort方法

 

首先介紹第一種方法:public void List<T>.Sort(),使用這種方法不是對List中的任何元素對象都可以進行排序,List中的元素對象必須繼承IComparable介面,並且要實現IComparable介面中的CompareTo()方法,在CompareTo()方法中要自己實現對象的比較規則。

int CompareTo(Object obj)
參數obj

類型:System.Object
與此執行個體進行比較的對象。 

傳回值

類型:System.Int32

一個值,指示要比較的對象的相對順序。傳回值的含義如下:

含義

小於零

此執行個體按排序次序在 obj 前面。

此執行個體與 obj 在排序次序中出現的位置相同。

大於零

此執行個體按排序次序在 obj 後面。

詳細可以參照如下代碼:

/// <summary>/// 單位科目公式的實體類/// </summary>public class AccountFormular:IComparable{    /// <summary>    /// 公司Id    /// </summary>    private string companyId;    public string CompanyId    {        get { return this.companyId; }        set { this.companyId = value; }    }    /// <summary>    /// 科目名稱    /// </summary>    private string accountName;    public string AccountName    {        get { return this.accountName; }        set { this.accountName = value; }    }    /// <summary>    /// 預算年份    /// </summary>    private int budgetYear;    public int BudgetYear    {        get { return this.budgetYear; }        set { this.budgetYear = value; }    }    /// <summary>    /// 預算公式    /// </summary>    private string formular;    public string Formular    {        get { return this.formular; }        set { this.formular = value; }    }    public int CompareTo(object obj)    {        int flg = 0;        try        {            AccountFormular sObj = (AccountFormular)obj;            flg = this.AccountName.CompareTo(sObj.AccountName); //先按照“科目名稱”進行排序             if (flg == 0)  //如果科目名稱相同,再按照“預算年份”的大小進行排序            {                if (this.BudgetYear > sObj.BudgetYear)                {                    flg = 1;                }                else if (this.BudgetYear < sObj.BudgetYear)                {                    flg = -1;                }            }        }        catch (Exception ex)        {            throw new Exception("比較異常", ex.InnerException);        }        return flg;    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.