调整数据列表内的顺序,现写成扩展方法工具类
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); } } }