首页 > 解决方案 > c# 按项目块拆分列表

问题描述

我得到了如下数据列表。在这里,我已经在列表中添加了 50 个演示项目。现在我想制作一个列表块,每个块中有 10 个项目。我该怎么做?我已经尝试过使用while循环,GroupBy但我不知道最好的方法是什么?我只需要从这 50 个项目中创建一个包含GroupBy10 个项目的新列表。

模型:

class Data
    {
        public int Id { get; set; }
        public string Text { get; set; }
        public static List<Data> data { get; set; } = new List<Data>();
    }

主程序:

class Program
{

    static void Main(string[] args)
    {
        for (int i = 0; i < 50; i++)//seeding 50 example data to global class
        {
            Data.data.Add(new Data
            {
                Id = i,
                Text = null,
            });
        }
    

        var chunkList = new List<Data>();//i need a chunk of list devided by 10 items in each chunk
        int count = 0;
        foreach (var item in Data.data)
        {
            do
            {
                chunkList.AddRange(chunkList.GroupBy(u => u.Id).Select(grp => grp.ToList()).ToList());//this logic is wrong
                count++;
            } while (count == 10);
            
        }


        Console.WriteLine("");
        
    }

标签: c#

解决方案


在这里,我为我的问题找到了最简单的解决方案。我正在使用MoreLinq 并使用Batch如下所示。

int size = 10;
var chunkList = Data.data.Batch(size);

推荐阅读