C# List排序Sort

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;
    }
}


你可能感兴趣的:(Date,Date,Date,datagrid,datagrid,C#,C#,Integer,asp.net,asp.net,asp.net,asp.net,asp.net,asp.net)