应无所住,而生其心
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

c# 根据数字把一个集合拆分成多个子集合

5601人阅读 2019/1/28 10:51 总访问:4813801 评论:0 收藏:0 手机
分类: .NET

有时间需要根据一个数子把一个集合拆分成多个子集合后在进行操作,就可以使用下面的代码。

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;
    }
}


欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价