调整数据列表内的顺序

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

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/archive/2012/06/18/2553360.html,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值