首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将数组拆分成特定大小的块?

如何将数组拆分成特定大小的块?
EN

Stack Overflow用户
提问于 2012-06-26 20:39:04
回答 8查看 53.6K关注 0票数 43

下午好,

我需要将一个数组分成更小的“块”。

我传递了大约1200个条目,需要将它们拆分成更容易处理的数组,每个数组包含100个条目,然后我需要处理这些条目。

有没有人能提点建议?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-06-26 21:08:45

您可以使用LINQ按块大小对所有项进行分组,然后创建新的数组。

// build sample data with 1200 Strings
string[] items = Enumerable.Range(1, 1200).Select(i => "Item" + i).ToArray();
// split on groups with each 100 items
String[][] chunks = items
                    .Select((s, i) => new { Value = s, Index = i })
                    .GroupBy(x => x.Index / 100)
                    .Select(grp => grp.Select(x => x.Value).ToArray())
                    .ToArray();

for (int i = 0; i < chunks.Length; i++)
{
    foreach (var item in chunks[i])
        Console.WriteLine("chunk:{0} {1}", i, item);
}

注意,不需要创建新的数组(需要cpu周期和内存)。如果省略了这两个ToArrays,也可以使用IEnumerable<IEnumerable<String>>

下面是运行代码:http://ideone.com/K7Hn2

票数 44
EN

Stack Overflow用户

发布于 2015-05-22 15:59:55

here我找到了另一个linq解决方案:

int[] source = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i = 0;
int chunkSize = 3;
int[][] result = source.GroupBy(s => i++ / chunkSize).Select(g => g.ToArray()).ToArray();

//result = [1,2,3][4,5,6][7,8,9]
票数 18
EN

Stack Overflow用户

发布于 2012-06-26 20:41:10

您可以使用Skip()Take()

string[] items = new string[]{ "a", "b", "c"};
string[] chunk = items.Skip(1).Take(1).ToArray();
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11207526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档