c# 实现List按指定数量分割

c# 实现List按指定数量分割

在进行开发过程中,有些场景需要我们对List进行按数量分割,比如说:假定一个1000条数据的list需要按照每100条数据分割,这样你就得到了10个list
场景有批量插入组合sql 等,当插入数据超出上限
那么如何实现呢?

            #region  初始化待处理的list
            List<string> list = new List<string>();
            for(var i=0;i<1000;i++)
            {
                list.Add(i.ToString());
            }
            #endregion 初始化完毕

            //存储分割后的数据
            List<List<string>> groupList = new List<List<string>>();
            int groupSize = 100; //每组数据100条
            for (int i = 0; i < list.Count; i += groupSize)
            {
                //去除数据 其中Skip 表示跳过多少条数据  Take表示获取多少条数据
                groupList.Add(list.Skip(i).Take(groupSize).ToList());
            }

亲测有效可使用哦

再附上已经封装好的insert sql组装方法

        /// 
        /// insertHead 表示插入语句头部 格式:insert into ... values
        /// valuesBody 表示插入多行数据 每行格式:(,,)
        /// batchBoxSize 表示一次最多插入条数
        /// 
        public static string GetBatchInsertSql(string insertHead ,List<string> valuesBody,int batchBoxSize)
        {
            if(valuesBody == null || valuesBody.Count == 0 || batchBoxSize <= 0 || batchBoxSize > 1000)
            {
                throw new Exception("输入参数不合法");
            }

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < valuesBody.Count(); i += batchBoxSize)
            {
                sb.Append(insertHead);
                sb.Append(string.Join(",", valuesBody.Skip(i).Take(batchBoxSize).ToList()) + ";\n");
            }
            return sb.ToString();
        }

觉得有用点个收藏吧!!!

你可能感兴趣的:(c#,c#,服务器,开发语言)