zoukankan      html  css  js  c++  java
  • 调整数据列表内的顺序

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

        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/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    elasticsearch 基础 —— 集群原理
    剑指 offer set 10 栈的压入、弹出序列
    剑指 offer set 9 包含min函数的栈
    剑指 offer set 8 树的子结构
    剑指 offer set 7 调整数组顺序使奇数位于偶数前面
    剑指 offer set 6 打印从 1 到 N 的所有数
    剑指 offer set 5 二进制中 1 的个数
    剑指 offer set 4 矩形覆盖
    剑指 offer set 3 旋转数组的最小数字
    剑指 offer set 2 从头到尾打印链表
  • 原文地址:https://www.cnblogs.com/linlf03/p/2553360.html
Copyright © 2011-2022 走看看