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


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值