19

我有一个类型的实例,List<string[]>我想将它转换为一个字符串,每个都string[]在换行符上。我正在使用以下 LINQ 查询来展平列表,但是我不确定如何在每个之间添加新行string[]而不将查询扩展为更丑陋的东西。有没有办法在不破坏我的查询并在循环中使用String.Joinor的情况下做到这一点?IEnumberable.Aggregateforeach

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

2 回答 2

56
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

更新这是正确完成的聚合 - 它使用StringBuilder在内存中构建单个字符串

results.Aggregate(new StringBuilder(),
                  (sb, a) => sb.AppendLine(String.Join(",", a)),
                  sb => sb.ToString());
于 2013-08-09T18:57:10.100 回答
3
results.Select(sa => sa.Aggregate((a, b) => a + ", " + b))
       .Aggregate((c, d) => c + Enviroment.NewLine + d);
于 2013-08-09T18:55:35.410 回答