调整数据列表内的顺序

简介:

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

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,如需转载请自行联系原作者


目录
相关文章
|
23天前
|
数据处理
重复值的判断标准是否可以根据具体业务需求进行调整?
重复值的判断标准需要紧密结合具体的业务需求进行灵活调整,这样才能确保数据处理的准确性和有效性,为业务决策提供可靠的数据支持。
51 10
|
7月前
|
索引
将数组指定索引位置的元素 移动到 目标索引位置,且不改变其他元素原本的顺序,注意这个不是对调元素位置,是移动某一个元素位置不影响其他元素顺(使用场景:拖拽改变数据的顺序,点击上下左右箭头移动元素顺序)
将数组指定索引位置的元素 移动到 目标索引位置,且不改变其他元素原本的顺序,注意这个不是对调元素位置,是移动某一个元素位置不影响其他元素顺(使用场景:拖拽改变数据的顺序,点击上下左右箭头移动元素顺序)
|
7月前
|
算法
递归淘汰List集合头部数据,获取最终集合的起始坐标
递归淘汰List集合头部数据,获取最终集合的起始坐标
|
JavaScript Python
从列表中或数组中随机抽取固定数量的元素组成新的数组或列表
从列表中或数组中随机抽取固定数量的元素组成新的数组或列表
70 0
|
JSON 数据格式 Python
一日一技:包含非hashable元素的列表如何去重并保持顺序?
一日一技:包含非hashable元素的列表如何去重并保持顺序?
113 0
|
Python
一日一技:从列表中一次性筛选多个指定位置的数据
一日一技:从列表中一次性筛选多个指定位置的数据
106 0
|
算法 前端开发 程序员
调整数组元素顺序
调整数组元素顺序
调整数组元素顺序
|
数据库 开发者 索引
列表增加元素|学习笔记
快速学习列表增加元素
列表增加元素|学习笔记
Python 在不改变顺序的前提下,去除列表中相邻且重复的元素
Python 在不改变顺序的前提下,去除列表中相邻且重复的元素
SwiftUI—如何调整记录在List列表里的顺序
SwiftUI—如何调整记录在List列表里的顺序
267 0
SwiftUI—如何调整记录在List列表里的顺序