c# - c# 按项目块拆分列表
问题描述
我得到了如下数据列表。在这里,我已经在列表中添加了 50 个演示项目。现在我想制作一个列表块,每个块中有 10 个项目。我该怎么做?我已经尝试过使用while
循环,GroupBy
但我不知道最好的方法是什么?我只需要从这 50 个项目中创建一个包含GroupBy
10 个项目的新列表。
模型:
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("");
}
解决方案
在这里,我为我的问题找到了最简单的解决方案。我正在使用MoreLinq
并使用Batch
如下所示。
int size = 10;
var chunkList = Data.data.Batch(size);
推荐阅读
- java - 无法从 Intellij Idea 部署战争文件构建
- activiti - Activiti script-task中如何调用外部URL或SAP接口?
- javascript - JavaScript 和 dc-js 中的数据表
- dependency-injection - 了解干净架构中的“依赖注入框架是细节”
- android - 在 EditText 中处理“Enter”并在其中插入字符
- django - 将数据从 django 视图传递到模板
- elasticsearch - 如何让 elasticsearch 多匹配模糊搜索始终返回最少数量的结果
- python - How to set a semi-positive Parameter(matrix) in CVXPY?
- javascript - jQuery 如何使 $(this) 选择器触发多个类
- python - Sphinx HTML builder 渲染函数