我有List<string> Names;,它有70万个名字.如何连接每500个字符串(使用分隔符",")并将它们添加到新字符串List<string> ABC;
所以我想要一个List<string>,这将有1400个连接的字符串.
ABC [0] =前500个名字,ABC [1] =接下来500个名字,依此类推.
以下是使用LINQ的方法:
var result =
Names
.Select((item, index) => new {Item = item, Index = index})
.GroupBy(x => x.Index / 500)
.Select(g => string.Join(",", g.Select(x => x.Item)))
.ToList();
Run Code Online (Sandbox Code Playgroud)
首先,对于每个项目,您选择它自己的项目及其索引.然后,您将这些项目分组,index / 500这意味着每500个项目将组合在一起.
然后,您可以使用string.Join每个组中的500个字符串连接在一起.
var abc = names.Batch(500).Select(x => String.Join(",", x)).ToList();
Run Code Online (Sandbox Code Playgroud)
注意:分组运算符不是流运算符(以及ToList).这意味着应枚举所有700k字符串,并为每个项目计算密钥,并且每个项目应存储在内部组中.这将花费一些时间和资源.批处理是流式传输,它不会在内部存储所有项目.它仅存储当前批次.因此,如果您不将结果转换为列表,则使用批处理,您可以更快地逐个处理批次并节省一些内存.