项目中经常遇见需要将一个巨大集合拆分成多个子集合的需求,以下提供两种方法供于参考,如果有其他更好的方法,欢迎私信讨论。
循环拆分(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;}
耗费时间