c# 根据数字把一个集合拆分成多个子集合
电脑版发表于:2019/1/28 10:51
有时间需要根据一个数子把一个集合拆分成多个子集合后在进行操作,就可以使用下面的代码。
List<List<string>> listGroup = new List<List<string>>();
int j = 10;
for (int i = 0; i < list1.Count; i += 10)
{
List<string> cList = new List<string>();
cList = list1.Take(j).Skip(i).ToList();
j +=10;
listGroup.Add(cList);
}
方法2(2024-12-20补充)
实现方法:
public List<List<T>> SplitList<T>(List<T> list, int size)
{
List<List<T>> subsets = new List<List<T>>();
for (int i = 0; i < list.Count; i += size)
{
subsets.Add(list.GetRange(i, size).ToList());
}
return subsets;
}具体使用:
using System;
using System.Collections.Generic;
using System.Linq;
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Program
{
public static void Main()
{
// 示例数据
List<User> users = new List<User>();
for (int i = 0; i < 10000; i++)
{
users.Add(new User { Id = i, Name = $"User{i}" });
}
int n = 1000; // 每个子集合的大小
List<List<User>> subsets = SplitList(users, n);
// 输出每个子集合的大小以验证结果
foreach (var subset in subsets)
{
Console.WriteLine(subset.Count);
}
}
public static List<List<T>> SplitList<T>(List<T> list, int size)
{
List<List<T>> subsets = new List<List<T>>();
for (int i = 0; i < list.Count; i += size)
{
subsets.Add(list.GetRange(i, size).ToList());
}
return subsets;
}
}