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组装方法
/// <summary>
/// insertHead 表示插入语句头部 格式:insert into ... values
/// valuesBody 表示插入多行数据 每行格式:(,,)
/// batchBoxSize 表示一次最多插入条数
/// </summary>
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();
}
觉得有用点个收藏吧!!!