如何将一个List <string>中的字符串连接到另一个?

Lit*_*Fox 1 c#

我有List<string> Names;,它有70万个名字.如何连接每500个字符串(使用分隔符",")并将它们添加到新字符串List<string> ABC;

所以我想要一个List<string>,这将有1400个连接的字符串.

ABC [0] =前500个名字,ABC [1] =接下来500个名字,依此类推.

Yac*_*sad 8

以下是使用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个字符串连接在一起.

  • 我个人会避免使用这种方法来处理大型列表,因为它会对所有字符串进行额外的复制. (2认同)

Ser*_*kiy 7

使用MoreLINQ Batch(或任何其他批处理实现):

var abc = names.Batch(500).Select(x => String.Join(",", x)).ToList();
Run Code Online (Sandbox Code Playgroud)

注意:分组运算符不是运算符(以及ToList).这意味着应枚举所有700k字符串,并为每个项目计算密钥,并且每个项目应存储在内部组中.这将花费一些时间和资源.批处理是流式传输,它不会在内部存储所有项目.它仅存储当前批次.因此,如果您不将结果转换为列表,则使用批处理,您可以更快地逐个处理批次并节省一些内存.