C#快速将一个List拆分为多个List

今天遇到一个小的问题,就是在处理数据时,如果一次性处理的数据过多,数据库会提示异常,基类的方法又不能改动,只能想着把数据拆分为多份,逐一进行处理,假如我们有一个9999条数据的List,但是每次最多只能处理1000个,那么我们就需要把这一个List按每份1000个拆分成10组,最后一组放999条数据,这样也可以实现相应的需求。

在写这个代码之前,我也在网上搜了一下相关的内容,看看有没有前人栽的树,结果我发现相关的内容很少,思路也不太对,索性就自己动动脑子写一个算了,虽然用到的场景也不会太多。

核心代码:

        /// <summary>
        /// 一个List拆分多个List
        /// </summary>
        /// <param name="list">要拆分的集合</param>
        /// <param name="num">每个集合要容纳的数量</param>
        /// <returns></returns>
        public List<List<T>> SplitList<T>(List<T> list, int num)
        {
            //初始化返回集
            List<List<T>> ts = new List<List<T>>();
            //新数据容器
            List<T> ms = new List<T>();

            for (int i = 0; i < list.Count; i++)
            {
                //循环依次将数据放入新的list容器
                ms.Add(list[i]); 
                if (((i + 1) % num == 0) || (i + 1 == list.Count))
                {
                    //如果i+1除以要分的份数为整除,或者是最后一份,则结束循环
                    ts.Add(ms);
                    //清空数据容器
                    ms = new List<T>(); 
                }
            }
            return ts;
        }

实现思路:

 

 

THE END