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

  • 相关阅读:
    wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败
    【原创】Linux PCI驱动框架分析(三)
    JavaScript 的灵异事件之一
    javascript 对http的get请求参数编码encodeURIComponent、encodeURI 和Java 解码
    Docker 容器逃逸漏洞 (CVE-2020-15257)
    如何关掉页面版知乎的登录模态框
    一个让java程序员有杀人的冲动的Xerces冲突问题
    双十一 大促 云服务器哪家好 哪家强(价格最低)
    git 拉取指定目录
    nginx 剔除 $args 变量中任意指定参数之万金油
  • 原文地址:https://www.cnblogs.com/linlf03/p/2553360.html
Copyright © 2011-2022 走看看