C# 将列表或集合拆分为块
我有一个程序,可以将文件的内容读入某种列表或数组。此列表/数组可以包含任意数量的项。我需要将它分成更小的组,比如说每个组50个项目,然后对每个组中的每个项目进行一些处理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
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列表中的每个项目?@irldevforeach(在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
}