C# 将列表或集合拆分为块

C# 将列表或集合拆分为块,c#,arrays,list,split,C#,Arrays,List,Split,我有一个程序,可以将文件的内容读入某种列表或数组。此列表/数组可以包含任意数量的项。我需要将它分成更小的组,比如说每个组50个项目,然后对每个组中的每个项目进行一些处理 List<string> stuffFromFile = new List<string>(); while ((line = fileReader.ReadLine()) != null) { stuffFromFile.Add(line); } Lis

我有一个程序,可以将文件的内容读入某种列表或数组。此列表/数组可以包含任意数量的项。我需要将它分成更小的组,比如说每个组50个项目,然后对每个组中的每个项目进行一些处理

List<string> stuffFromFile = new List<string>();

while ((line = fileReader.ReadLine()) != null)
      {
           stuffFromFile.Add(line);
      }
List stuffFromFile=new List();
而((line=fileReader.ReadLine())!=null)
{
stuffFromFile.Add(行);
}
我已经在网上浏览了一些关于如何把东西分块的例子,但说实话,我并不真正理解这些例子,其中一些似乎过于复杂。我只需要一些简单的东西,将原始的项目列表分为50个组,然后让我遍历每个组中的每个项目,直到处理完成

读取的项目总数很可能不是一个我可以平均除以50的数字,因此最有可能的是最后一组包含的项目少于50个,但仍需要像其他项目一样进行处理


有人能帮忙吗?听起来应该很简单,但我真的不知道怎么做。我已经看过使用LINQ的例子,但我也不理解它。

这里有一个扩展方法,可以处理任何列表和任何大小的块

public static List<List<T>> SplitList<T>(this List<T> me, int size = 50)
{
    var list = new List<List<T>>();
    for (int i = 0; i < me.Count; i += size)
        list.Add(me.GetRange(i, Math.Min(size, me.Count - i)));
    return list;
} 
公共静态列表拆分列表(此列表为me,int size=50)
{
var list=新列表();
for(int i=0;i
像这样使用它:

List<List<string>> chunksOf50 = stuffFromFile.SplitList();
List chunksOf50=stuffFromFile.SplitList();
List stuffromfile=new List(){“1”、“2”、“3”、“4”}//目录
而(stuffFromFile.Count>0)
{
List newChunk=stuffFromFile.Take(50).ToList();//最多包含50个元素
stuffFromFile.RemoveRange(0,newChunk.Count);//删除所获取的元素
}

我想这可能就是你想要的:只读取50,处理,重复有什么不对?当最终目标是处理每个项目时,为什么你要分成几个组?处理数据的系统只能以小组的形式接收内容。我如何迭代50列表中的每个项目?@irldev
foreach(在chunksOf50中列出chunk)
对于您来说,一些简单的东西,比如嵌套的foreach循环。
foreach(在chunksOf50中列出listOfStrings){foreach(listOfStrings中的string chunk){//do stuff};
谢谢,这似乎起作用了。
List<string> stuffFromFile = new List<string>() { "1", "2", "3", "4" }; //contents

while (stuffFromFile.Count > 0)
{
    List<string> newChunk = stuffFromFile.Take(50).ToList(); //Take up to 50 elements
    stuffFromFile.RemoveRange(0, newChunk.Count); // Remove the elements you took
}