调整数据列表内的顺序

 调整数据列表内的顺序,现写成扩展方法工具类

public  static  class  CollectionHelper
{
     //交换List项的顺序
     public  static  bool  ExchangeOrder<T>( this  IList<T> list, int  sourceID, int  newID)
     {
         if  (sourceID >= list.Count || sourceID < 0 || newID >= list.Count || newID < 0 || sourceID == newID) return  false ;
         try
         {
             var  temp = list[sourceID];
             list[sourceID] = list[newID];
             list[newID] = temp;
             return  true ;
         }
         catch  (Exception)
         {
             return  false ;
         }
     }
 
     /// <summary>
     /// 向上移动
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <param name="list">The 数据列表 list</param>
     /// <param name="id">The 需要移动的id</param>
     /// <param name="num">The 移动的 位数. 默认为1, 几位就向上移动几位</param>
     /// <returns></returns>
     public  static  bool  MoveUpper<T>( this  IList<T> list, int  id, int  num = 1)
     {
         return  list.MoveItem(id, id - num);
     }
 
     //向下移动
     public  static  bool  MoveDown<T>( this  IList<T> list, int  id, int  num = 1)
     {
         return  list.MoveItem(id, id + num);
     }
 
     //移动到顶部
     public  static  bool  MoveTopper<T>( this  IList<T> list, int  id)
     {
         return  list.MoveItem(id, 0);
     }
 
     //移动到底部
     public  static  bool  MoveBottom<T>( this  IList<T> list, int  id)
     {
         return  list.MoveItem(id, list.Count -1);
     }
 
     /// <summary>
     /// 移动
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <param name="list">数据列表</param>
     /// <param name="sourceID">原来的数据ID</param>
     /// <param name="newID">移动后数据ID</param>
     /// <returns></returns>
     public  static  bool  MoveItem<T>( this  IList<T> list, int  sourceID, int  newID)
     {
         if  (sourceID >= list.Count || sourceID < 0 || newID >= list.Count || newID < 0 || sourceID == newID) return  false ;
         try
         {
             var  temp = list[sourceID];
             list.RemoveAt(sourceID);
             list.Insert(newID, temp);
             return  true ;
         }
         catch  (Exception)
         {
             return  false ;
         }
     }
}

 

 

调用的方法:

class  CollectionSample
{
 
     public  void  Test()
     {
         List<Student> stuList = new  List<Student>();
         Student stu = new  Student(1, "zhangSan" );
         stuList.Add(stu);
         stu = new  Student(2, "LiSi" );
         stuList.Add(stu);
         stu = new  Student(3, "WangWu" );
         stuList.Add(stu);
         stu = new  Student(4, "ZhangLiu" );
         stuList.Add(stu);
         string  msg = string .Empty;
         foreach  (Student item in  stuList)
         {
             msg += String.Format( "ID: {0}, Name: {1} " , item.id, item.name);
         }
         //Exchange(stuList);
         Move(stuList);
     }
 
     private  static  void  Exchange(List<Student> stuList)
     {
         CollectionHelper.ExchangeOrder(stuList, 2, 1);
 
         string  newMsg = string .Empty;
         foreach  (Student item in  stuList)
         {
             newMsg += String.Format( "ID: {0}, Name: {1} " , item.id, item.name);
         }
     }
 
     private  static  void  Move(List<Student> stuList)
     {
         CollectionHelper.MoveUpper(stuList, 2, 3);
 
         string  newMsg = string .Empty;
         foreach  (Student item in  stuList)
         {
             newMsg += String.Format( "ID: {0}, Name: {1} " , item.id, item.name);
         }
     }
}

 

 

本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/06/18/2553360.html,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值