扁平列表<;string[]>;每个元素有一行

本文关键字:元素 一行 gt lt 列表 string | 更新日期: 2023-09-27 18:27:00

我有一个类型为List<string[]>的实例,我想将其转换为一个字符串,在换行符上各有一个string[]。我正在使用下面的LINQ查询来展开列表,但我不确定如何在每个string[]之间添加新行,而不将我的查询扩展到更丑陋的内容。有没有一种方法可以做到这一点,而不需要删除我的查询并在foreach循环中使用String.JoinIEnumberable.Aggregate

results.SelectMany(x => x).Aggregate((c, n) => c + ", " + n)

扁平列表<;string[]>;每个元素有一行

String.Join(Environment.NewLine, results.Select(a => String.Join(", ", a)));

完整样品:

var results = new List<string[]> {
    new[]{"this", "should", "be", "on"},
    new[]{"other", "line"}
};
var result = String.Join(Environment.NewLine, 
                         results.Select(a => String.Join(", ", a)));

结果:

this, should, be, on
other, line

UPDATE这里是正确的聚合-它使用StringBuilder在内存中构建单个字符串

results.Aggregate(new StringBuilder(),
                  (sb, a) => sb.AppendLine(String.Join(",", a)),
                  sb => sb.ToString());
results.Select(sa => sa.Aggregate((a, b) => a + ", " + b))
       .Aggregate((c, d) => c + Enviroment.NewLine + d);