• 调整数据列表内的顺序


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

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

  • 相关阅读:
    vue自定义指令,自动调用下载的方法
    electron桌面通知,修改默认通知应用名electron.app.Electron为自己应用的名称
    C++二叉树前中后序遍历(递归&非递归)统一代码格式
    反转链表和反转链表2
    基于partition的递归
    C++归并排序(数组&链表)
    关于C++跨平台
    Visual Studio 2019社区版:错误 MSB6006 “CL.exe”已退出,代码为 2
    腾讯2017校招开发工程师笔试试卷(一)答题解析
    C++面试高频题
  • 原文地址:https://www.cnblogs.com/linlf03/p/2553360.html
Copyright © 2020-2023  润新知