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

  • 相关阅读:
    python中的os
    文件系统的简单操作
    文件与目录管理
    用户与用户组管理
    基础命令的操作
    linux开机流程
    ansible源码安装、普通用户实现批量控制
    python3中得数据类型
    判断一个字符串中得大写字母,小写字母,数字出现得次数
    Elasticsearch 如何安全加固
  • 原文地址:https://www.cnblogs.com/linlf03/p/2553360.html
Copyright © 2011-2022 走看看