项目中经常遇见需要将一个巨大集合拆分成多个子集合的需求,以下提供两种方法供于参考,如果有其他更好的方法,欢迎私信讨论。
循环拆分(demo为100条数据的集合拆分成10个集合)
List<string> a = new List<string>();//父集合
List<List<string>> b = new List<List<string>>();//拆分的子集合
List<string> c = new List<string>();//中间量
for (int i = 0; i < 1000; i++)
{
a.Add(i.ToString());//测试数据
}
int j = 100;//每个集合的容量
for (int i = 0; i < 1000; i +=10)
{
c = a.Take(j).Skip(i).ToList();//take为每次取的数量,skip为跳过的数量。执行时take每次取0~9,skip跳过i项。
j += 100;
b.Add(c);
}
Console.ReadKey();
耗费时间
循环加入
List<string> a = new List<string>();//父集合
List<List<string>> b = new List<List<string>>();//拆分的子集合
List<string> c = new List<string>();//中间量
for (int i = 0; i < 1000; i++)
{
a.Add(i.ToString());//测试数据
}
int j = 999;//每个集合序号最大值
for (int i = 0; i < 10000; i++)
{
c.Add(a[i]);
if (i < j)
{
continue;
}
b.Add(c);
c = new List<string>();
j += 1000;
}
耗费时间