泛型实现List(List<T>)排序

ExpandedBlockStart.gif 代码
public   class  Post : IComparable < Post >
{
    
private   string  id  =   string .Empty;
    
private   string  title  =   string .Empty;
    
private   int  orderby;

    
public   string  ID
    {
        
get
        {
            
return  id;
        }
        
set
        {
            id 
=  value;
        }
    }
    
public   string  Title
    {
        
get
        {
            
return  title;
        }
        
set
        {
            title 
=  value;
        }
    }
    
public   int  OrderBy
    {
        
get
        {
            
return  orderby;
        }
        
set
        {
            orderby 
=  value;
        }
    }

    
#region  IComparable<Post> 成员

    
public   int  CompareTo(Post other)
    {
        
return  ( orderby -  other.orderby);
    }

    
#endregion
}

让类继承IComparable接口,并且实现接口,在实现接口方法中设置为顺序排序

 

#region  IComparable<Post> 成员

    
public   int  CompareTo(Post other)
    {
        
return  ( orderby -  other.orderby);
    }

  
#endregion

 

倒序可以设置为

 

#region  IComparable<Post> 成员

    
public   int  CompareTo(Post other)
    {
        
return  ( other.orderby -  orderby);
    }

    
#endregion

 

默认实现泛型类型排序可以是使用List<T>.Sort()比如

 

ExpandedBlockStart.gif 代码
       List < Post >  posts  =   new  List < Post > ();
        
for  ( int  i  =   0 ; i  <   10 ; i ++ )
        {
            Post post 
=   new  Post();
            post.ID 
=  i.ToString();
            post.Title 
=   " 哈哈 " ;
            post.OrderBy 
=  i;
            posts.Add(post);
        }
        
// 排序
        posts.Sort();
        
foreach  (Post p  in  posts)
        {
            Response.Write(p.ID 
+   " <br> " );
        }

 

我们可以看到输出的结果

0

1

.

.

.

10

如果我们其它属性排序比如ID,TITLE则如何实现?

 

ExpandedBlockStart.gif 代码
List < Post >  posts  =   new  List < Post > ();
        
for  ( int  i  =   0 ; i  <   10 ; i ++ )
        {
            Post post 
=   new  Post();
            post.ID 
=  i.ToString();
            post.Title 
=   " 哈哈 " ;
            post.OrderBy 
=  i;
            posts.Add(post);
        }
        
// 排序
        
// posts.Sort();
        posts.Sort( delegate (Post p1, Post p2)
            {
                
return  p2.ID.CompareTo(p1.ID);
            }
        );
        
foreach  (Post p  in  posts)
        {
            Response.Write(p.ID 
+   " <br> " );
        }

 

 

 

转载于:https://www.cnblogs.com/nosnowwolf/archive/2006/11/13/559173.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值